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

求一巨麻烦的SQL语句,多谢高人指教!

2012-02-23 
求一巨麻烦的SQL语句,谢谢高人指教!!!我有如下表结构:挂号序号ghxhchar(18)挂号日期ghrqdatetime挂号科室g

求一巨麻烦的SQL语句,谢谢高人指教!!!
我有如下表结构:
挂号序号ghxhchar(18)
挂号日期ghrqdatetime
挂号科室ghkschar(10)
退号标志thbzchar(1) 0=正常,1=退号
我要求得到每个科室在一段时间内的挂号情况如下:
  科室挂号量统计
查询日期 2007-9-1 至 2007-9-30
科室 挂号人次 退号人次 实际人次
儿科 100 10 90
外科 100 1 99
...................................
要求不用存储过程,不用临时表,我该怎么写SQL语句
谢谢高人了!!

[解决办法]
--try

SQL code
select 科室=ghks,挂号人次=count(*),退号人次=sum(case when thbz=1 then 1 else 0 end),实际人次=sum(case when thbz=0 then 1 else 0 end)from tbNamegroup by ghks
[解决办法]
select ghks 科室 , count(*) 挂号人次 ,
sum(case thbz when '1 ' then 1 end) '退号人次 ', 
sum(case thbz when '0 ' then 1 end) '实际人次 ' 
from tb 
where convert(varchar(7),ghrq,120) = '2007-09 ' 
group by ghks 

[解决办法]
--注意:将''中的空格删除.
select ghks 科室 , count(*) 挂号人次 ,
sum(case thbz when '1' then 1 else 0 end) '退号人次',
sum(case thbz when '0' then 1 else 0 end) '实际人次'
from tb
where convert(varchar(7),ghrq,120) = '2007-09'
group by ghks

[解决办法]
SQL code
select 挂号科室,[挂号人次]=(select count(*) from table1 where convert(varchar(6),挂号日期,112)='200709')[退号人次]=sum(case 退号标志 when 1 then 1 else 0 end),[退号人次]=sum(case 退号标志 when 0 then 1 else 0 end)from table1whereconvert(varchar(6),挂号日期,112)='200709'--取年月group by 挂号科室 

热点排行