Jeg er klar over, at dette er to år gammelt, men det irriterer mig, at det accepterede svar kræver brug af dynamisk SQL, og det svar, der har stemt mest op, vil ikke virke:
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
Du skal brug en Group By, ellers får du et forskudt resultat. Hvis du bruger en Group By, skal du pakke hver kolonne, der ikke er i Group By-udtrykket, i en aggregeret funktion (eller en underforespørgsel).