有个调查问卷10题选择题(单选)
每题5个选项,分值从1到5.
比如,第一题分值1的没有人选,出来的格式也就成了
题目 选项 人数
学习很辛苦 2 4
学习很辛苦 3 2
学习很辛苦 4 2
学习很辛苦 5 2分数为1的也要提取出来
题目 选项 人数
学习很辛苦 1 0
学习很辛苦 2 4
学习很辛苦 3 2
学习很辛苦 4 2
学习很辛苦 5 2
每题5个选项,分值从1到5.
比如,第一题分值1的没有人选,出来的格式也就成了
题目 选项 人数
学习很辛苦 2 4
学习很辛苦 3 2
学习很辛苦 4 2
学习很辛苦 5 2分数为1的也要提取出来
题目 选项 人数
学习很辛苦 1 0
学习很辛苦 2 4
学习很辛苦 3 2
学习很辛苦 4 2
学习很辛苦 5 2
选项,isnull(count(1),0) as 人数
from
tb
group by
选项
from ta a
right join (select 1 as 选项 union all select 2 union select 3 union select 4 union select 5) b
on a.选项 = b.选项
create table [TB]([题目] varchar(10),[选项] int,[人数] int)
insert [TB]
select '学习很辛苦',2,4 union all
select '学习很辛苦',3,2 union all
select '学习很辛苦',4,2 union all
select '学习很辛苦',5,2select 题目=isnull(题目,'学习很辛苦'),
选项=isnull(选项,number),
人数=isnull(人数,0)
from [TB] right join spt_values on 选项=number where number<6 and type='p' and number>0 /*
题目 选项 人数
---------- ----------- -----------
学习很辛苦 1 0
学习很辛苦 2 4
学习很辛苦 3 2
学习很辛苦 4 2
学习很辛苦 5 2(所影响的行数为 5 行)*/drop table [TB]
insert into tb values(1,2)
insert into tb values(1,3)
insert into tb values(1,4)
insert into tb values(1,5)
insert into tb values(2,3)
insert into tb values(2,4)
insert into tb values(2,5)
goselect t1.* , isnull(t2.人数,0) 人数 from
(
select m.题目 , n.选项 from
(select distinct 题目 from tb)m,
(select 1 选项 union all select 2 union all select 3 union all select 4 union all select 5) n
) t1 left join
(
select 题目 , 选项 , count(1) 人数 from tb group by 题目 , 选项
) t2
on t1.题目 = t2.题目 and t1.选项 = t2.选项
order by t1.题目 ,t1.选项drop table tb
/*题目 选项 人数
----------- ----------- -----------
1 1 0
1 2 1
1 3 1
1 4 1
1 5 1
2 1 0
2 2 0
2 3 1
2 4 1
2 5 1(所影响的行数为 10 行)
*/
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。