Oracle中使用pivot的问题

tabletest:div_codepayout_kind_namemoney101001物价生活性补贴1200101001在职工伤保险800101001基本离退休费40... tabletest:
div_code payout_kind_name money
101001 物价生活性补贴 1200
101001 在职工伤保险 800
101001 基本离退休费 4000
101001 在职工伤保险 300
我要转换成:
div_code 物价生活性补贴 在职工伤保险 基本离退休费
101001 1200 1100 4000
我写的语句:
select 物价生活性补贴,在职工伤保险 from
(select payout_kind_name,F1 from fb_u_payout_budget)
pivot(sum(F1) for payout_kind_name in (物价生活性补贴,在职工伤保险))
执行不成功,问题出在哪
展开
 我来答
micro0369
推荐于2016-02-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4034万
展开全部

pivot  这个是sqlserver的函数啊,


oracle 中没有的。


用这个吧:

select div_code,sum(case when payout_kind_name = '物价生活性补贴’ then money else 0 end) 物价生活性补贴,
sum(case when payout_kind_name = '在职工伤保险’ then money else 0 end) 在职工伤保险,
sum(case when payout_kind_name = '基本离退休费’ then money else 0 end) 基本离退休费from fb_u_payout_budget
group by  div_code


20201222更改:oracle11g增加了pivot和unpivot;我孤陋寡闻一直没接触过,竟然以为不支持;增加pivot的写法,以免误导后来者;感谢追答两位的提醒:

select * from fb_u_payout_budget
pivot(sum(money) 
      for payout_kind_name 
        in ('物价生活性补贴' as 物价生活性补贴,'在职工伤保险' as 在职工伤保险,'基本离退休费' as 基本离退休费));
        
select 物价生活性补贴,在职工伤保险 from
(select payout_kind_name,money from fb_u_payout_budget)
pivot(sum(money) for payout_kind_name in ('物价生活性补贴' as 物价生活性补贴,'在职工伤保险' as 在职工伤保险));
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式