Schwenken einer Tabelle mit mehreren Spalten in SQL

Sean Brookins

Mein Ziel hier ist es, eine Liste von zwei entsprechenden Geschäftsnummern zu erstellen und eine Ausgabe ähnlich der folgenden bereitzustellen:

Endziel: Erstellen Sie eine Liste der nächstgelegenen Geschäfte nach Reisezeit und Entfernung basierend auf den Quelldaten von 2 Zeilen pro Postleitzahl9, wobei jede Zeile die Reisezeit in Entfernung und Zeit zu einem betreffenden Geschäft darstellt.

Das Ergebnis ist, dass jede Postleitzahl 2 Geschäfte zur Auswahl hat und die Anforderung darin besteht, eine Zeile mit beiden Optionen zurückzugeben.

+-----------+---------------+---------------------+-------------------+-------------------------+
|    zip    | Shortest_time | Shortest_time_store | Shortest_distance | Shortest_distance_store |
+-----------+---------------+---------------------+-------------------+-------------------------+
|  70011134 | 38.7035       |                  75 | 21.3124           |                     115 |
|  70011186 | 38.4841       |                  75 | 21.4144           |                     115 |
|  70011207 | 39.1567       |                  75 | 21.1826           |                     115 |
| 100013232 | 22.976        |                 145 | 9.5031            |                     115 |
| 112075140 | 21.888        |                 145 | 7.3705            |                     115 |
+-----------+---------------+---------------------+-------------------+-------------------------+

Originaldatensatz

+---------------+--------------------------+-----------------------+------------------+
| CORRECTED_ZIP | SourceOrganizationNumber | Travel Time (Minutes) | Distance (Miles) |
+---------------+--------------------------+-----------------------+------------------+
|      70011134 |                       75 | 38.7035               | 26.8628          |
|      70011134 |                      115 | 39.3969               | 21.3124          |
|      70011186 |                       75 | 38.4841               | 26.7609          |
|      70011186 |                      115 | 39.6389               | 21.4144          |
|      70011207 |                       75 | 39.1567               | 31.2771          |
|      70011207 |                      115 | 39.188                | 21.1826          |
|     100013232 |                      115 | 28.6561               | 9.50311          |
|     100013232 |                      145 | 22.976                | 10.0307          |
|     112075140 |                      115 | 36.1803               | 7.37053          |
|     112075140 |                      145 | 21.888                | 9.50123          |
+---------------+--------------------------+-----------------------+------------------+

Datensatz, nachdem ich ihn mit dieser Abfrage geändert habe:

SELECT TOP 1000 [corrected_zip]
              , TRY_CONVERT( DECIMAL(18, 4), ROUND([Travel Time (Minutes)], 4)) AS [Unit of Measurement]
              , [SourceOrganizationNumber]
              , 'Time' AS                                                          [Type]
FROM                       [db].[dbo].[my_table_A] [tt]
WHERE                     [tt].[CORRECTED_ZIP] IN('070011134', '070011186', '070011207', '112075140', '100013232')
AND [Travel Time (Minutes)] IN
(
    SELECT MIN([Travel Time (Minutes)])
    FROM   [db].[dbo].[my_table_A]
    WHERE  [CORRECTED_ZIP] = [tt].[CORRECTED_ZIP]
    GROUP BY [CORRECTED_ZIP]
)
UNION ALL
SELECT TOP 1000 [corrected_zip]
              , TRY_CONVERT( DECIMAL(18, 4), ROUND([Distance (Miles)], 4))
              , [SourceOrganizationNumber]
              , 'Distance'
FROM            [db].[dbo].[my_table_A] [tt]
WHERE           [tt].[CORRECTED_ZIP] IN('070011134', '070011186', '070011207', '112075140', '100013232')
AND [Distance (Miles)] IN
(
    SELECT MIN([Distance (Miles)])
    FROM   [db].[dbo].[my_table_A]
    WHERE  [CORRECTED_ZIP] = [tt].[CORRECTED_ZIP]
    GROUP BY [CORRECTED_ZIP]
)
ORDER BY [CORRECTED_ZIP];
+---------------+---------------------+--------------------------+----------+
| corrected_zip | Unit of Measurement | SourceOrganizationNumber |   Type   |
+---------------+---------------------+--------------------------+----------+
|      70011134 | 38.7035             |                       75 | Time     |
|      70011134 | 21.3124             |                      115 | Distance |
|      70011186 | 21.4144             |                      115 | Distance |
|      70011186 | 38.4841             |                       75 | Time     |
|      70011207 | 39.1567             |                       75 | Time     |
|      70011207 | 21.1826             |                      115 | Distance |
|     100013232 | 9.5031              |                      115 | Distance |
|     100013232 | 22.976              |                      145 | Time     |
|     112075140 | 21.888              |                      145 | Time     |
|     112075140 | 7.3705              |                      115 | Distance |
+---------------+---------------------+--------------------------+----------+

Daten, nachdem ich versucht habe, sie zu schwenken

+---------------+--------------------------+----------+---------+
| corrected_zip | SourceOrganizationNumber | Distance |  Time   |
+---------------+--------------------------+----------+---------+
|     070011134 |                      115 | 21.3124  | NULL    |
|     070011134 |                       75 | NULL     | 38.7035 |
|     070011186 |                      115 | 21.4144  | NULL    |
|     070011186 |                       75 | NULL     | 38.4841 |
|     070011207 |                      115 | 21.1826  | NULL    |
|     070011207 |                       75 | NULL     | 39.1567 |
|     100013232 |                      115 | 9.5031   | NULL    |
|     100013232 |                      145 | NULL     | 22.9760 |
|     112075140 |                      115 | 7.3705   | NULL    |
|     112075140 |                      145 | NULL     | 21.8880 |
+---------------+--------------------------+----------+---------+

Es scheint, als ob mein Problem darin besteht, die richtige Geschäfts-ID auszuwählen, anstatt nach Geschäfts-ID zu gruppieren.

GMB

Sie können row_number()eine Unterabfrage zweimal verwenden (einmal, um nach Zeit zu ordnen, einmal nach Entfernung) und dann in der äußeren Abfrage eine bedingte Aggregation durchführen:

select
    corrected_zip,
    min(travel_time) shortest_time,
    min(case when rnt = 1 then source_organization_number end) shortest_time_store,
    min(distance) shortest_distance,
    min(case when rnd = 1 then source_organization_number end) shortest_distance_store
from (
    select 
        t.*,
        row_number() over(partition by corrected_zip order by travel_time) rnt,
        row_number() over(partition by corrected_zip order by distance) rnd
    from mytable t
) t
group by corrected_zip

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Schwenken einer Tabelle mit mehreren Indizes, bei der die Anzahl der Spalten nicht statisch ist

Schwenken einer Tabelle mit einer Zeile in SQL

SQL Vergleichen Sie Zeilen einer Tabelle mit mehreren Spalten

Mit mehreren Spalten breiter schwenken

Wie Tabelle auf mehreren Spalten in Pandas schwenken?

Schwenken einer Tabelle mit Parametrisierung

Pivot-Tabelle mit mehreren Spalten in SQL?

Pivot-Tabelle in SQL mit mehreren Spalten

Schwenken einer einfachen Tabelle in SQL

Dynamisches Schwenken einer 3-Spalten-Tabelle

Komplexes Schwenken in Pandas mit mehreren Spalten

Schwenken in R mit mehreren Spalten unterschiedlichen Typs

SQL Vlookup auf mehreren Spalten mit einer einzelnen Spalte einer anderen Tabelle

Anzeigen einer einzelnen SQL-Spalte in mehreren Spalten einer HTML-Tabelle mit PHP

SQL-Zählvorkommen jedes Datensatzes (Ganzzahl) in einer Tabelle mit mehreren Spalten

Pivot und Unpivot einer Tabelle mit mehreren Spalten und Zeilen in SQL

MySQL - Erstellen einer Tabelle mit nicht null in mehreren Spalten zusammen

Verwenden von LIKE mit mehreren Spalten in einer Tabelle

PyQT5 und Filtern einer Tabelle mit mehreren Spalten

Erstellen einer Pivot-Tabelle mit mehreren Spalten in R.

Aktualisieren Sie mehrere Spalten mit mehreren Werten in einer einzigen Tabelle

Kontionale Formatierung Wenn in einer anderen Tabelle mit mehreren Spalten übereinstimmen

MYSQL-Update aus einer anderen Tabelle mit mehreren Spalten

Ich muss einige Daten in SQL-Spalten mit mehreren Datumsangaben für jede Kombination schwenken

Wie kann ich eine SQL Server-Tabelle mit mehreren Spaltenwerten schwenken?

Probleme beim Schwenken einer Tabelle mit Umfragedaten

SQLServer - Schwenken einer Tabelle mit Group

Schwenken einer Tabelle mit doppeltem Index

Suche nach mehreren Spalten in einer einzigen Tabelle sql