有一个表,info表的内容大概如下
col1 col2 col3
1 2 3
1 3
4 1 2
现在就想统计下,在col1,col2,col3这3列的值的统计,但这3列的值是共同意义的
可能表达起来比较难,我就用结果来说明下吧
例如上面那个表的数据,结果应该如下:
value count
1 3
2 2
3 2
4 1
意思就是“1”这个值在info表的所有行里的col1 col2 col3这3列出现了3次,(重复不算,就是说如果col1和col2列都是1,那么这行也只能算“1”这个值出现了1次)
不知道大家明白了吗。。表达不清,起谅解
如果明白了知道方法的,希望大虾能给个SQL方法,万分感谢
------解决方案--------------------
明白了,同一行重复不计算,在表中加入唯一标识的字段bz(比如自增类型)
SELECT requedept,SUM(case when question1='A' then 1 else 0 end) AS A,
SUM( case when question1='B' then 1 else 0 end) AS B,
SUM(ase when question1='C' then 1 else 0 end) AS C,
SUM(Iase when question1='D' then 1 else 0 end) AS D
FROM (
SELECT requedept,question1,BZ FROM tt
UNION
SELECT requedept,question2,BZ FROM tt
UNION
SELECT requedept,question3,BZ FROM tt )A1 GROUP BY requedept
如果A、B、C、D有多种,用SP动态生成SQL语句再执行
;