Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Pivot mit SQL Server 2000

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.