これは2年前のことですが、受け入れられた回答が動的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句にない各列を集計関数(またはサブクエリ)でラップする必要があります。