Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pivoter avec SQL Server 2000

Je me rends compte que cela date de deux ans, mais cela me dérange que la réponse acceptée appelle à l'utilisation de SQL dynamique et que la réponse la plus votée ne fonctionnera pas :

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

Vous devez utilisez un groupe par ou vous obtiendrez un résultat échelonné. Si vous utilisez un Group By, vous devez encapsuler chaque colonne qui n'est pas dans la clause Group By dans une fonction d'agrégation (ou une sous-requête).