首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求一条SQL,该怎么解决

2012-03-21 
求一条SQL数据表类似如下:地区状态人数--------------------------江苏未通过2112广东未通过3324广东通过2

求一条SQL
数据表类似如下:

地区 状态 人数
--------------------------
江苏 未通过 2112
广东 未通过 3324
广东 通过 23
北京 未通过 2561
北京 通过 152
四川 未通过 672
湖南 未通过 1231

要把它查询为如下形式的结果:

地区 总数 通过 未通过
-------------------------------------
江苏 2112 0 2112
广东 5624 23 3324
北京 4081 152 2561
四川 672 0 672
湖南 1231 0 1231

请问SQL应该怎么写呀??

[解决办法]
select 地区, sum(人数), sum(case when 状态 = '通过' then 人数 else 0 end), sum(case when 状态 = '未通过' then 人数 else 0 end) from table group by 地区

大致如此
[解决办法]

SQL code
select 地区,       sum(人数) 总数,       sum(case when 状态 = '通过' then 人数 else 0 end) 通过,       sum(case when 状态 = '未通过' then 人数 else 0 end) 未通过from tb group by 地区
[解决办法]
SQL code
select 地区,       sum(人数) 总数,       sum(case when 状态 = '通过' then 人数 else 0 end) 通过,       sum(case when 状态 = '未通过' then 人数 else 0 end) 未通过from tb group by 地区
[解决办法]
SQL code
create table test1(id number(5),地区 varchar2(20),状态 varchar2(10),人数 number(10));insert into test1 values(1,'江苏','未通过',2112);insert into test1 values(2,'广东','未通过',3324);insert into test1 values(3,'广东','通过',23);insert into test1 values(4,'北京','未通过',2561);insert into test1 values(5,'北京','通过',152);insert into test1 values(6,'四川','未通过',672);insert into test1 values(7,'湖南','未通过',1231);select a.地区,       sum(a.人数) 总数,       sum(decode(a.状态,'通过',a.人数,0)) 通过,       sum(decode(a.状态,'未通过',a.人数,0)) 未通过from test1 agroup by a.地区       地区     总数   通过    未通过----------------------------------------1    北京    2713    152    25612    广东    3347    23    33243    湖南    1231    0    12314    江苏    2112    0    21125    四川    672    0    672 

热点排行