Mir ist klar, dass dies zwei Jahre alt ist, aber es nervt mich, dass die akzeptierte Antwort die Verwendung von dynamischem SQL fordert und die Antwort mit den meisten positiven Stimmen nicht funktioniert:
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 Verwenden Sie ein Gruppieren nach oder Sie erhalten ein gestaffeltes Ergebnis. Wenn Sie ein Group By verwenden, müssen Sie jede Spalte, die sich nicht in der Group By-Klausel befindet, in eine Aggregatfunktion (oder eine Unterabfrage) einschließen.