Tôi nhận ra rằng câu trả lời này đã được hai năm tuổi, nhưng tôi thấy khó chịu khi câu trả lời được chấp nhận yêu cầu sử dụng SQL động và câu trả lời được ủng hộ nhiều nhất sẽ không hoạt động:
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
Bạn phải sử dụng Nhóm Theo hoặc bạn sẽ nhận được một kết quả đáng kinh ngạc. Nếu bạn đang sử dụng Group By, bạn phải bao bọc từng cột không có trong mệnh đề Group By trong một hàm tổng hợp (hoặc một truy vấn con).