Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Pivô usando SQL Server 2000


Eu percebo que isso tem dois anos, mas me incomoda que a resposta aceita chame o uso de SQL dinâmico e a resposta mais votada não funcionará:
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

Você deve use um Group By ou você obterá um resultado escalonado. Se estiver usando um Group By, você deve agrupar cada coluna que não está na cláusula Group By em uma função agregada (ou uma subconsulta).