我有一個查詢,其代碼如下所示:如何調換記錄列成行
SELECT DocumentID, ComplexSubquery1 ... ComplexSubquery5
FROM Document
WHERE ...
ComplexSubquery是被使用,咄計算所有的數值領域,複雜的子查詢。
我想用這個查詢作爲子查詢,生成類似以下的彙總查詢:
Field DocumentCount Total
1 dc1 s1
2 dc2 s2
3 dc3 s3
4 dc4 s4
5 dc5 s5
其中:
dc<n> = SUM(CASE WHEN ComplexSubquery<n> > 0 THEN 1 END)
s <n> = SUM(CASE WHEN Field = n THEN ComplexSubquery<n> END)
我怎麼能這樣做在SQL Server ?
注:我知道我可以通過丟棄原來的查詢和使用工會避免此問題:
SELECT '1' AS TypeID,
SUM(CASE WHEN ComplexSubquery1 > 0 THEN 1 END) AS DocumentCount
SUM(ComplexSubquery1) AS Total
FROM (SELECT DocumentID, BLARGH ... AS ComplexSubquery1) T
UNION ALL
SELECT '2' AS TypeID,
SUM(CASE WHEN ComplexSubquery2 > 0 THEN 1 END) AS DocumentCount
SUM(ComplexSubquery2) AS Total
FROM (SELECT DocumentID, BLARGH ... AS ComplexSubquery2) T
UNION ALL
...
但我想避免這條路線,因爲多餘的代碼,使我的眼睛流血。 (此外,未來複雜子查詢的數量確實存在增長的可能性。)
你有沒有看`unpivot`? – 2011-02-09 23:00:43
不是那是什麼? – pyon 2011-02-09 23:02:02