请教一道统计的SQL题
有这样的一个表:
ID name Index Desc Question answer
1 张三 1 学生调查 是否男生 是
2 张三 1 学生调查 是否团员 是
3 张三 1 学生调查 是否班干部 否
4 张三 1 学生调查 是否内宿 是
5 张三 1 学生调查 是否特长生 否
6 张三 1 学生调查 是否教职工子弟 不详
7 张三 2 家庭调查 是否特困户 否
8 张三 2 家庭调查 是否广州市户口 是
现要统计学生在各次调查中答案为'是'的总数,'否'的总数,'不详'的总数,
0:不详 1:否 2:是
且按如下排列,请问如何实现,谢谢!
[name] [Desc] [是] [否] [不详]
张三 学生调查 3 2 1
张三 家庭调查 1 1 0
建表:
create table table1
(
[ID] [int] NOT NULL,
[name] [varchar](50),
[index] [int] NOT NULL,
[Desc] [varchar](50),
[Question] [varchar](100),
[answer] [int] NOT NULL
)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(1,'张三',1,'学生调查','是否男生',2)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(2,'张三',1,'学生调查','是否团员',2)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(3,'张三',1,'学生调查','是否班干部',1)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(4,'张三',1,'学生调查','是否内宿',2)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(5,'张三',1,'学生调查','是否特长生',1)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(6,'张三',1,'学生调查','是否教职工子弟',0)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(7,'张三',2,'家庭调查','是否特困户',1)
INSERT INTO table1([ID],[name],[index],[Desc],[Question],[answer])
VALUES(8,'张三',2,'家庭调查','是否广州市户口',2)
------解决方案--------------------SQL code
--加多个排序
select
name,
[Desc],
[是]=sum(case when answer=2 then 1 else 0 end ),
[否]=sum(case when answer=1 then 1 else 0 end ),
[不详]=sum(case when answer=0 then 1 else 0 end )
from
table1
GROUP BY name, [Desc]
order by [是] desc