SQL小计

时间:2012-10-13 15:12:20

标签: sql-server-2008

我正在尝试编写一个SQL Server 2008查询,它将数据输出到小计列中。我的SQL技能还很差,所以我真的可以使用一些帮助。

我有两张桌子,A和B.

A.user (unique) 
A.answer  <- can only be one of two answers, 'Answer1' or 'Answer2' 
B.user (unique) 
B.zip

我要做的是编写一个SQL语句,生成一个四列输出,通过zip汇总回答。像这样:

Zip    Answer1    Answer2   Total
----------------------------------
12345     25        22        47
23456     7          0         7
45678     0         15        15

任何圣人建议?

谢谢!

托尼

1 个答案:

答案 0 :(得分:3)

我认为这就是你所需要的:

SELECT B.Zip 
     , SUM(CASE WHEN answer='Answer1' THEN 1 ELSE 0 END)AS Answer1
     , SUM(CASE WHEN answer='Answer2' THEN 1 ELSE 0 END)AS Answer2
     , COUNT(*) AS Total
FROM A INNER JOIN B ON A.[user] = B.[user]
GROUP BY B.Zip

这是一个小提琴:http://sqlfiddle.com/#!3/60916/2/0