Wie simulieren UNPIVOT in Access?
UNPIVOT
ist verfügbar in MS SQL-Server 2005, aber AFAIK nicht in MS Access 2010. Wie kann es implementiert werden, mit on-board-Mittel? Ich habe zum Beispiel eine Tabelle
ID | A | B | C | Key 1 | Key 2 | Key 3
---------------------------------------
1 | x | y | z | 3 | 199 | 452
2 | x | y | z | 57 | 234 | 452
wollen und einen Tisch haben, wie
ID | A | B | C | Key
--------------------
1 | x | y | z | 3
2 | x | y | z | 57
1 | x | y | z | 199
2 | x | y | z | 234
2 | x | y | z | 452
Schlüssel 452 ist ein besonderer Fall. Derzeit mache ich die rotation in OLEDB/ATL C++. Es ist zwar schnell genug, ich bin immer noch neugierig. Was ist das effizienteste SQL-Anweisung für Access 2010 hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Abfrage ...
... gibt dieses recordset (mit deinem Beispiel-Tabelle Werte als tblUnpivotSource) ...
Leider gibt es keinen einfachen Weg, dies zu tun mit access. Sie können dies tun, indem Sie mit einem
UNION
zu bekommen, jeden WertUNION
entfernen würde, die nicht eindeutigen Werte - warumUNION ALL
?Können Sie erstellen eine zusätzliche Tabelle mit allen Spaltennamen als Werte
(kann von excel verwenden, kopieren Sie die erste Zeile Ihrer Tabelle zu excel - > einfügen - > transpose)
Erstellen Sie in der Tabelle ein auto-increment-Spalte und der index dieser Spalte
Erstellen Sie eine neue cross join Abfrage wie der folgenden
Nachteil wäre, Sie zu pflegen haben
AUX_TABLE
zu halten, dass die Arbeit. Aber wenn dies ist ein one-time-Sache, das könnte der Weg zu gehen.