ORACLE纵向表转换为横向表写法

系统 1758 0

假设存在如下纵向表,第一列为id(可能是某个业务数据的id),第二列为类型,第三列为类型对应的值,如下图:

ORACLE纵向表转换为横向表写法

如上表,存在2,3,4三种类型,其中业务数据ID为1的三种类型都有值,业务数据ID为2的三种类型都有值,业务数据ID为3的只有类型2和3有值,现在要把纵向表横过来显示,可以采用如下代码:

     -- =========================================================

-- 纵向表变横向表:

-- 1. 转换类型,类型的值必须是整数,且不等于0,即0没有意义,0可以表示为空

 -- =========================================================

SELECT 

       t.id,

       SUM(DECODE(t.code, 2, 2, 0)) "第二项", -- 如果该行类型为2则就是2,其它的都为0

       SUM(DECODE(t.code, 3, 3, 0)) "第三项",

       SUM(decode(t.code, 4, 4, 0)) "第四项"

 FROM ttt t WHERE t.id=1 GROUP BY t.id;

 -- =========================================================

-- 纵向表变横向表:

-- 1. 转换类型对应的数据,且数据需要是数值,且0没有意义,即0可以表示为空

 -- =========================================================

 SELECT 

       t.id,

       SUM(DECODE(t.code, 2, t.val, 0)) "第二项", -- 如果该行类型为2则显示2类型对应的值DECODE,否则都显示0

       SUM(DECODE(t.code, 3, t.val, 0)) "第三项",

       SUM(DECODE(t.code, 4, t.val, 0)) "第四项"

 FROM ttt t GROUP BY t.id;
  


 

 

 

 

ORACLE纵向表转换为横向表写法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论