Я понимаю, что это два года, но мне кажется, что принятый ответ требует использования динамического 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
вы должны использовать группы By или вы получите шахматном результат. Если вы используете Group By, вы должны обернуть каждый столбец, который не находится в предложении Group By, в агрегированной функции (или в подзапросе).
Это работает только когда значения являются статическими, т. е. вы заранее знаете значения столбца. – 2011-04-27 14:24:55