Осъзнавам, че това е на две години, но ме притеснява, че приетият отговор изисква използване на динамичен SQL и отговорът с най-високо гласуване няма да работи:
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
Вие трябва използвайте Group By или ще получите поетапен резултат. Ако използвате Group By, трябва да обвиете всяка колона, която не е в клаузата Group By, в агрегатна функция (или подзаявка).