新手求一条SQL语句-谢谢(100分)

  • 主题发起人 主题发起人 thtf888
  • 开始时间 开始时间
T

thtf888

Unregistered / Unconfirmed
GUEST, unregistred user!
有一表记录和结构如下:
病区 导诊 医生 护士 卫生 <---字段
儿科  20 40 20 40 --
内科 40 80 20 20 |
儿科 20 20 80 60 |<-----记录
内科 60 20 20 30 |
外科 20 60 80 20 |
外科 40 80 20 20 --

按病区分组,求出每个病区每个字段(导诊,医生,护士,卫生)值为20的个数。
就是要得到下面的结果:
病区 导诊 医生 护士 卫生
儿科 2 1 1 2
内科 1 2
外科 1 1 2

刚学的编程,谢谢帮忙!!!
 
select 病区, sum(导诊) 导诊, sum(医生) 医生, sum(护士) 护士, sum(卫生) 卫生
(select 病区,
case 导诊 when 20 then 1 else 0 end 导诊,
case 医生 when 20 then 1 else 0 end 医生,
case 护士 when 20 then 1 else 0 end 护士,
case 卫生 when 20 then 1 else 0 end 卫生
from Tb) A group by 病区
 
SELECT 病区, SUM(CASE WHEN 导诊=20 THEN 1 ELSE 0 END) AS 导诊,
SUM(CASE WHEN 医生=20 THEN 1 ELSE 0 END) 医生,
SUM(CASE WHEN 护士=20 THEN 1 ELSE 0 END) 护士,
SUM(CASE WHEN 卫生=20 THEN 1 ELSE 0 END) 卫生
FROM ......
GROUP BY 病区
 
谢谢两位!!对了,忘了说了,我用的Access数据库,为什么总是显示‘未指定错误’,为什么???
 
Access不支持case when
下面的你试试?

SELECT 病区,
SUM(iif(导诊=20,1,0)) AS 导诊,
SUM(iif(医生=20,1,0)) AS 医生,
SUM(iif(护士=20,1,0)) AS 护士,
SUM(iif(卫生=20,1,0)) AS 卫生
FROM TableName
GROUP BY 病区
 
dcx002的语句要改一下字段别名。
 
谢谢各位了!结了!
 
后退
顶部