2016-08-19 10 views
2

T1Zusammenführen von zwei Spalten von SQL Server

enter image description here

T2 resultieren aus Entpivotisierung T1

enter image description here

Unpivot query:

SELECT LocM, convert(varchar,[Date],112) as DateKey, FinanceCode, Amount 
FROM SalesDetail 
UNPIVOT 
    ([Amount] FOR [FinanceCode] IN([Sales],[Wages])) AS P 

T3

enter image description here

Wie beitreten/T2 mit T3 fusionieren, so wird das Ergebnis sein wie:

StoreCode | FinanceCode | DateKey | Amount 
070  | Wages  | 20160131 | 3533 
070  | Sales  | 20160131 | 833 
070  | 0000  | 20160131 | 0 

Antwort

1

Ich nehme an, Sie solche Vereinigung von Datensätzen für alle Termine wollen, nicht nur für 20160131.

Warum machen Sie nicht einfach UNION ALL in T2 und T3, indem Sie die richtige Reihenfolge der Spalten verwenden?

z.

SELECT StoreCode, FinanceCode, DateKey, Amount from T3 
UNION ALL 
SELECT LocM, FinanceCode, DateKey, Amount from T2 

Sie können es in einer Unterabfrage wickeln und ORDER BY hinzufügen, wenn Sie von einer Kategoriezeilen wollen nebeneinander sein.

+0

Was ist, wenn die Anzahl der einzelnen Tabellenspalten nicht gleich ist? zum Beispiel was, wenn t2 4 Spalten und t3 5 Spalten haben –

+0

Komm schon, das ist eine grundlegende SQL-Sache. Wenn Sie ALLE Objekte mit verschiedenen # Spalten verbinden möchten, fügen Sie Konstanten mit dem Wert hinzu, den Sie in fehlenden Spalten sehen möchten. Siehe z.B. hier: http://stackoverflow.com/questions/2309943/unioning-two-tables-with-different-number-of-columns –

Verwandte Themen