table[id] [num1] [num2] [num3] [num4]
1 0 2 2 1
2 1 0 1 1
3 1 1 0 2
4 1 0 2 1
5 0 1 2 2
6 1 0 2 1我要实现 查出
num1字段 值为1的数据总数,值为2的数据总数,值为0的数据总数,
num2字段 值为1的数据总数,值为2的数据总数,值为0的数据总数,
一次类推
num4字段 值为1的数据总数,值为2的数据总数,值为0的数据总数。怎么写sql最为方便有效啊?

解决方案 »

  1.   

    抛砖引玉了,SELECT count( num1 ) AS num1_count , num1 AS num1_value
    FROM `site_contact_stat`
    GROUP BY `num1`这样就能查出 字段num1的 信息,那么其他的也能写在一起吗?怎么写呢?
      

  2.   

    select
    sum(case [num1] when 1 then 1 else 0 end) as [num1字段 值为1的数据总数],
    sum(case [num1] when 2 then 1 else 0 end) as [num1字段 值为2的数据总数],
    sum(case [num1] when 0 then 1 else 0 end) as [num1字段 值为0的数据总数],
    sum(case [num2] when 1 then 1 else 0 end) as [num2字段 值为1的数据总数],
    sum(case [num2] when 2 then 1 else 0 end) as [num2字段 值为2的数据总数],
    sum(case [num2] when 0 then 1 else 0 end) as [num2字段 值为0的数据总数],
    sum(case [num3] when 1 then 1 else 0 end) as [num3字段 值为1的数据总数],
    sum(case [num3] when 2 then 1 else 0 end) as [num3字段 值为2的数据总数],
    sum(case [num3] when 0 then 1 else 0 end) as [num3字段 值为0的数据总数],
    sum(case [num4] when 1 then 1 else 0 end) as [num4字段 值为1的数据总数],
    sum(case [num4] when 2 then 1 else 0 end) as [num4字段 值为2的数据总数],
    sum(case [num4] when 0 then 1 else 0 end) as [num4字段 值为0的数据总数]
    from
    tablename