我有3个名为vQuestion1,vQuestion2,vQuestion3的视图。每个列都有2列,名为Outcome和Total。
“结果”列可以包含许多值,例如“N / A”,“改进”,“未改进”。每个结果都有一个总分。
vQuestion1 vQuestion2 vQuestion3
Outcome Total Outcome Total Outcome Total
N/A 12 Improved 10 N/A 5
Improved 10 Not Improved 20 Improved 13
Not Improved 4
我需要创建一个结果,将总数加在一起以创建结果,如下所示:
Total Answers
Outcome Total
N/A 17
Improved 33
Not Improved 24
请注意,并非每个问题都存在所有答案,即问题2没有N / A.
答案 0 :(得分:1)
首先执行UNION ALL
,然后执行SUM
像
这样的东西SqlServer 2005 +
;WITH Vals AS (
SELECT *
FROM vQuestion1
UNION ALL
SELECT *
FROM vQuestion2
UNION ALL
SELECT *
FROM vQuestion3
)
SELECT Outcome,
SUM(Total) Total
FROM Vals
GROUP BY Outcome
或者
SELECT Outcome,
SUM(Total) Total
FROM (
SELECT *
FROM vQuestion1
UNION ALL
SELECT *
FROM vQuestion2
UNION ALL
SELECT *
FROM vQuestion3
) Vals
GROUP BY Outcome