Saya menyadari ini berumur dua tahun, tetapi itu mengganggu saya bahwa jawaban yang diterima membutuhkan penggunaan SQL dinamis dan jawaban yang paling banyak dipilih tidak akan berfungsi:
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
Anda harus gunakan Group By atau Anda akan mendapatkan hasil yang terhuyung-huyung. Jika Anda menggunakan Kelompokkan Menurut, Anda harus membungkus setiap kolom yang tidak ada dalam klausa Kelompokkan Menurut dalam fungsi agregat (atau subkueri).