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

一道sql面试题,真难,你会不?该怎么处理

2012-05-20 
一道sql面试题,真难,你会不???????题目一、SQL Server中有如下表,用sql统计出某一时间段内门诊与住院的检查

一道sql面试题,真难,你会不???????
题目一、

SQL Server中有如下表,用sql统计出某一时间段内门诊与住院的检查人数与费用
表:reg_info{sheetid,patientType,ExamDateTime,fee}
表字段说明:
  Sheetid varchar(32)-- 检查号(表明是一次检查),主键
  PatientType char(1)-- 病人类别:0代表门诊,1代表住院
  ExamDateTime datetime--检查时间
  fee decimal(8,2) -- 检查费用

例:

(07年12月——08年6月)数据如下

月份门诊人数门诊费用住院人数住院费用
12110220
1110220
2220220
3110220
4440220
5110220
6110220


会吗?

[解决办法]

SQL code
select datename(mm,ExamDateTime) as 月份,sum(case when PatientType=0 then 1 else 0 end) as 门诊人数,sum(case when PatientType=0 then fee else 0 end) as 门诊费用,sum(case when PatientType=1 then 1 else 0 end) as 住院人数,sum(case when PatientType=1 then fee else 0 end) as 住院费用from 表where 查询条件=.....group by datename(mm,ExamDateTime)
[解决办法]
SQL code
select   convert(varchar(7),ExamDateTime,120) as 月份,  sum(case when PatientType=0 then 0 else 0 end) as 门诊人数,  sum(case when PatientType=0 then fee else 0 end) as 门诊费用,  sum(case when PatientType=0 then 1 else 0 end) as 住院人数,  sum(case when PatientType=0 then fee else 0 end) as 住院费用from  reg_infowhere  convert(varchar(7),ExamDateTime,120) between '2007-12' and '2008-06'group by  convert(varchar(7),ExamDateTime,120) 

热点排行