有这样的一个表:
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)

解决方案 »

  1.   

    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)
    go
    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]name                                               Desc                                               是           否           不详          
    -------------------------------------------------- -------------------------------------------------- ----------- ----------- ----------- 
    张三                                                 家庭调查                                               1           1           0
    张三                                                 学生调查                                               3           2           1(所影响的行数为 2 行)
      

  2.   


    --加多个排序
    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
      

  3.   

    select [desc]
    ,是=count(case when [answer]=2 then 2 end)
    ,否=count(case when [answer]=1 then 1 end)
    ,不详=count(case when [answer]=0 then 0 end)
     from table1 
    group by [desc]