首页 > 数据库技术 > 详细

oracle行转列

时间:2021-06-20 22:59:06      阅读:23      评论:0      收藏:0      [点我收藏+]

行转列,例子:统计各科各出院情况人数

with t as(
	SELECT b.科室ID,a.患者ID,a.result FROM 患者信息表 a  
       where a.出院时间 >= to_date(‘2021-6-1 00:00:00‘,‘yyyy-MM-dd hh24:mi:ss‘)
             and a.出院时间 <= to_date(‘2021-6-20 23:59:59‘,‘yyyy-MM-dd hh24:mi:ss‘)
) 
SELECT 科室ID,sum(治愈) 治愈,sum(好转) 好转,sum(未愈) 未愈,sum(死亡) 死亡,sum(其他) 其他 FROM (
	SELECT 科室ID,	0 治愈,	0 好转,	0 未愈,	0 死亡,	0 其他	FROM t group by 科室ID	 union all	 
	SELECT 科室ID,	sum(1), 	0,	0,	0,	0	FROM t where result=1 group by 科室ID union all	/*治愈*/
	SELECT 科室ID,	0,	sum(1), 	0,	0,	0	FROM t where result=2 group by 科室ID union all	/*好转*/
	SELECT 科室ID,	0,	0,	sum(1), 	0,	0	FROM t where result=3 group by 科室ID union all	/*未愈*/
	SELECT 科室ID,	0,	0,	0,	sum(1), 	0	FROM t where result=4 group by 科室ID union all	/*死亡*/
	SELECT 科室ID,	0,	0,	0,	0,	sum(1) 	FROM t where result=9 group by 科室ID 			/*其他*/ 
) group by 科室ID

技术分享图片

oracle行转列

原文:https://www.cnblogs.com/anjun-xy/p/14907878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!