Tôi đã viết truy vấn này:Pivot với một lượng không xác định các giá trị khác biệt
SELECT s, [1] AS a1, [2] AS a2, [3] AS a3, [4] AS a4
FROM (SELECT grade, aid, s FROM m) p
PIVOT
(
SUM(grade)
FOR aid IN ([1], [2], [3], [4])
) AS pvt ORDER BY pvt.s;
Đó trả về kết quả:
s a1 a2 a3 a4
1 25 69 95 56
2 27 99 16 87
. . . .
99 98 12 34 76
Mà chính xác là kết quả tôi muốn. Vấn đề của tôi là sẽ không phải lúc nào cũng có bốn giá trị riêng biệt trong 'viện trợ'. Có thể viết lại truy vấn này (hoặc sử dụng một thủ tục đã lưu trữ) để số lượng cột 'a *' phụ thuộc vào số lượng giá trị khác nhau trong 'viện trợ' không?
Xin cảm ơn, đó chính là điều tôi muốn! –
+1 - Mặc dù là nitpicky, bạn đang thiếu bí danh cho các cột của mình – Lamak