Orcale decode行转列

本文介绍如何在Oracle数据库中使用DECODE函数将数据行转换为列,以处理进销存数据,涉及销售金额和税金的聚合,并解决因ID非唯一值导致的重复行问题。

Orcale decode行转列

今天给财务出进销存数据,打开数据表,看到根据业务类型写入的销售,内心想哭。就试着用decode做了一下行转列,还可以用case when
以及orcale 自带函数 with as;pivot等进行行转列,但是今天就只用decode来实现想要的功能。

这是原表图,YWLX为业务类型,JE为销售金额,SJ为税金

在这里插入图片描述

这是希望实现的效果图

在这里插入图片描述

接下来进行具体的实现步骤以及解决遇到的问题

1、原表数据:想把JE金额+SJ税金根据YWLX业务类型行转列
SELECT * FROM SPJXCPCR_XM ORDER BY ID;
在这里插入图片描述
2、通过decode行转列
decode(变量,值1,输出1,值2,输出2…)
简而言之就是
if 变量=值1
输出1
else if 变量=值2
输出2

SELECT ID
,DECODE(C.YWLX,1,SUM(C.JE+C.SJ)) 进货
,DECODE(C.YWLX,6,SUM(C.JE+C.SJ)) 退货
,DECODE(C.YWLX,3,SUM(C.JE+C.SJ)) 变价转入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜉蝣杂技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值