把纵列的相同数据分组成不同的横列

本文提供了一个复杂的SQL查询案例,用于从数据库中选择特定的数据并按不同部分进行聚合。该查询使用了多个子查询、联接操作、解码函数以及窗口函数等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 select 
        CARRIERACCOUNDCODE, 
        max(decode(sectionId, 1,sectionId)) id1, 
        max(decode(sectionId, 1, setionName)) name1,

        max(decode(sectionId, 2,sectionId)) id2, 
        max(decode(sectionId, 2, setionName)) name2 ,

        max(decode(sectionId, 3,sectionId)) id3, 
        max(decode(sectionId, 3, setionName)) name3,

        max(decode(sectionId, 4,sectionId)) id4,
        max(decode(sectionId, 4, setionName)) name4,
        
         max(decode(sectionId, 5,sectionId)) id5,
        max(decode(sectionId, 5, setionName)) name5,
        
         max(decode(sectionId, 6,sectionId)) id6,
        max(decode(sectionId, 6, setionName)) name6
from (
        select 
            CARRIERACCOUNDCODE, 
            setionName,
            sectionId,
            row_number() over(partition by CARRIERACCOUNDCODE order by sectionId) rn, 
            count(*) over(partition by CARRIERACCOUNDCODE) cnt 

        from (SELECT t2.CARRIERACCOUNDCODE,
                        t2.sectionId,
                        t2.setionName
                FROM    carrier t1
                     LEFT JOIN
                        funcinfo t2
                     ON t1.CARRIERACCOUNTCODE = t2.CARRIERACCOUNDCODE 
                     where CARRIERACCOUNDCODE is not null
                 )
        )
  
     group by CARRIERACCOUNDCODE;
     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值