verwenden. Ich weiß, dass dies zwei Jahre alt ist, aber es stört mich, dass die akzeptierte Antwort die Verwendung von dynamischem SQL und der meistbeworbenen Antwort erfordert ‚t Arbeit:
Select P.ProductId, P.Name
, Min(Case When PM.MetaKey = 'A' Then PM.MetaValue End) As A
, Min(Case When PM.MetaKey = 'B' Then PM.MetaValue End) As B
, Min(Case When PM.MetaKey = 'C' Then PM.MetaValue End) As C
From Products As P
Join ProductMeta As PM
On PM.ProductId = P.ProductId
Group By P.ProductId, P.Name
Sie müssen eine Gruppe von verwenden, oder Sie werden ein gestaffeltes Ergebnis. Wenn Sie eine Gruppierung nach verwenden, müssen Sie jede Spalte, die sich nicht in der Gruppierung nach befindet, in eine Aggregatfunktion (oder eine Unterabfrage) umbrechen.
Das funktioniert nur Wenn die Werte statisch sind - dh, Sie wissen im Voraus die Spaltenwerte .. –
eine Sache, die ich es nicht verstehe, ist, wenn Sie [m] .metavalue in allen Schalterfällen dann verwenden müssen, warum Schalterfall verwenden, können Sie erklären ein bisschen. – Alex
Weil zum Beispiel nur die Summe von [m] .metavalue gewünscht wird, wobei [m] .metakey in Spalte a "a" ist. Im Wesentlichen filtert es alle anderen metavalue Ergebnisse der Summe aus. Auf diese Weise können Sie die Daten in den ursprünglichen Zeilen in Spalten transponieren. –