如何计算已计数的列数

时间:2014-05-23 03:52:57

标签: sql

请帮我解决问题

我的真实表格是:

id     group      numberOfLevel(counted column)
 1     10              4
 2     10              2
 3     11              2 
 4     11              1 
 5     11              3
 6     11              2
 7     21              1
 8     21              2 
 9     30              1 
 10    40              2 

但我想表明:

group    1st_level      2nd_level    3rd_level     over4th_level
 10         0              1            0                1 
 11         1              2            1                0
 21         1              1            0                0 
 30         1              0            0                0 
 40         0              1            0                0

我需要用哪种方式来展示桌子? 请分享经验?

1 个答案:

答案 0 :(得分:2)

这是一个基本的数据透视查询,可以在这样的查询中使用ANSII SQL案例,
它应该适用于大多数数据库:

select group_nr,
       sum( case when numberOfLevel = 1 then 1 else 0 end ) As level_1st,
       sum( case when numberOfLevel = 2 then 1 else 0  end ) As level_2nd,
       sum( case when numberOfLevel = 3 then 1 else 0  end ) As level_3rd,
       sum( case when numberOfLevel >= 4 then 1 else 0  end ) As over4th_level
from table1
group by group_nr
;

演示:http://sqlfiddle.com/#!2/4bd04/4

不要使用group作为列名,因为group是SQL中的关键字。