一张表里,不同条件,同时出现结果(在线等)
我有一张 SERV 表,里面有area_code的字段,area_code有3个值,分别为0790,0791,0792
如果我单独求area_code=0790 时的记录条数
就应该是
select count(*) from serv where area_code=0790
但,我有什么办法,能运行一次,就能同时得到
area_code=0790 的记录条数
area_code=0791 的记录条数
area_code=0792 的记录条数
跪求................
------解决方案--------------------如果只需要输出一条记录的话
select sum(case when area_code= '0790 ' then 1 else 0 end) as [0790],
sum(case when area_code= '0791 ' then 1 else 0 end) as [0791],
sum(case when area_code= '0792 ' then 1 else 0 end) as [0792]
from serv
------解决方案--------------------select sum(case when area_code= '0790 ' then 1 else 0 end) as [0790],
sum(case when area_code= '0791 ' then 1 else 0 end) as [0791],
sum(case when area_code= '0792 ' then 1 else 0 end) as [0792]
from serv a where exists(select 1 from dj where area_code=a.area_code and serv_state= 'F1R ')
------解决方案----------------------我写了个实例,你看一下吧.
--表名 SERV 字段 area_code (0790,0791,0792)
--表名 dj 字段 serv_state (F1R 和F1A)
create table SERV
(
area_code char(4)
)
select * from SERV
insert into serv
select '0790 ' union all
select '0791 ' union all
select '0792 '
create table dj
(
area_code char(4),
serv_state char(3)
)
insert into dj (area_code,serv_state)
select '0790 ', 'F1R ' union all
select '0790 ', 'F1A ' union all
select '0791 ', 'F1A ' union all
select '0792 ', 'F1A ' union all
select '0793 ', 'F1A ' union all
select '0791 ', 'F1R ' union all
select '0792 ', 'F1R ' union all
select '0793 ', 'F1R ' union all
select '0790 ', 'F1R '
select *
from dj
-------------
--生成临时表
select distinct area_code into # from dj where serv_state= 'F1A '
select * from #
--最终结果
select sum(case when a.area_code= '0790 ' then 1 else 0 end) as [0790],
sum(case when a.area_code= '0791 ' then 1 else 0 end) as [0791],
sum(case when a.area_code= '0792 ' then 1 else 0 end) as [0792]
from serv a left join # b on (a.area_code=b.area_code)
------解决方案--------------------Select * from (
select area_code,count(area_code) as number from group by area_code) T
where t.rea_code in ( '0790 ', '0791 ', '0792 ')
------解决方案--------------------SELECT area_code,COUNT(area_code) FROM SERV GROUP By area_code