怎样写这样复杂的语句?

jizhipeng 2002-12-11 04:30:42
例如有一个表的数据如下:
内科 西药 300
内科 中药 500
内科 检查 600
外科 手术 200
外科 化验 750
但我显示的时候想这样显示:
科室 西药 中药 检查 手术 化验
内科 300 500 600 0 0
外科 0 0 0 200 750

先谢谢大家的帮助
...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyberflying 2002-12-11
  • 打赏
  • 举报
回复
这应该算是典型的行列转换吧,decode()最拿手了,case when也可以的
请参考一下:
http://expert.csdn.net/Expert/topic/1242/1242628.xml?temp=.9477198


这几天好像这种问题比较多啊,FAQ现在不知有没有了,楼主或版主整理一下吧,便于大家查询。
fwwxxjingling 2002-12-11
  • 打赏
  • 举报
回复
select distinct q2.ks ,q2.检查,q3.西药 from
(select distinct ks ,mc,sum(jg) from wxxtest group by ks,mc) q1
,(select '内科' ks,sum(jg) 检查 from wxxtest where mc='检查') q2
,(select '内科' ks,sum(jg) 西药 from wxxtest where mc='西药') q3
where q1.ks=q2.ks(+)
and q1.ks=q3.ks(+)
and (q1.mc='检查' or q1.mc='西药')
jiezhi 2002-12-11
  • 打赏
  • 举报
回复
SELECT *
FROM (SELECT 科室,
sum(decode(药品,西药,费用)) 西药,
sum(decode(药品,中药,费用)) 中药,
sum(decode(药品,检查,费用)) 检查0,
sum(decode(药品,手术,费用)) 手术
sum(decode(药品,化验,费用)) 化验
FROM your_table
GROUP BY 科室)
ORDER BY 1;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧