Ik realiseer me dat dit twee jaar oud is, maar het irriteert me dat het geaccepteerde antwoord vraagt om het gebruik van dynamische SQL en het meest geüpdatete antwoord niet zal werken:
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
Je moet gebruik een Group By of je krijgt een verspringend resultaat. Als u een Group By gebruikt, moet u elke kolom die niet in de Group By-clausule staat, in een aggregatiefunctie (of een subquery) opnemen.