首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多列的枢轴和和

具有多列的枢轴和和
EN

Stack Overflow用户
提问于 2018-07-16 18:49:59
回答 1查看 86关注 0票数 1

我有一个查询,它创建以下数据:

代码语言:javascript
复制
ID          LegacyID                type1 type2 date        value
1500000001  10070242801000000217    DF    RN    2018-05-24  -3.33000000
1500000002  10078387921000000217    PP    IN    2018-05-26  -11.00000000
1500000002  10078387921000000217    PP    RN    2018-05-26  -100.00000000
1500000003  10080625841000000217    DF    RN    2018-05-23  -3.33000000
1500000003  10080625841000000217    DF    RN    2018-05-23  99.000000

我试图将数据转到类型字段上,在按ID、LegacyID和date字段分组的同时,对值进行求和。

创建如下:

代码语言:javascript
复制
id              legacyid                    date        DFRN          PPIN          PPRN
1500000001      10070242801000000217        2018-05-24  -3.33000000   0             0
1500000002      10078387921000000217        2018-05-26  0            -11.00000000   -100.00000000
1500000003      10080625841000000217        2018-05-23  95.67000000   0             0

注意,我正在尝试将类型字段连接到它们的唯一组合中。

我尝试过几个支点的突变,但我似乎做不到,我最近的尝试(不起作用)如下所示:

代码语言:javascript
复制
    select
        id,
        legacyid,
        [date],
        [DF]+[RN] as DFRN,
        [CR]+[CR] as CRCR,
        [CR]+[MR] as CRMR,
        [DF]+[DS] as DFDS,
        [DF]+[MR] as DFMR,
        [PP]+[DS] as PPDS,
        [PP]+[IN] as PPIN,
        [PP]+[RN] as PPRN,
    from (
    select
        tl.[id],
        r.[LegacyId],
        a.type1,
        bt.type2,   
        [Date],
        gl.TotalAmountUSD as [value]
    from
       ----long join
    where
        gh.IsActive = 1                             
    group by 
        tl.id,
        r.LegacyId,
        a.type1,
        bt.type2,
        [date])
    ) as bb
    pivot
    (
        sum(value)
        for rentalid in (
        [DF]+[RN] as DFRN,
        [CR]+[CR] as CRCR,
        [CR]+[MR] as CRMR,
        [DF]+[DS] as DFDS,
        [DF]+[MR] as DFMR,
        [PP]+[DS] as PPDS,
        [PP]+[IN] as PPIN,
        [PP]+[RN] as PPRN)
    ) as p

一个人将如何转向这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 18:53:00

只需使用条件聚合:

代码语言:javascript
复制
with t as (
      . . .
     )
select ID, LegacyID, date,
       sum(case when type1 = 'DF' and type2 = 'RN' then value end) as DFRN,
       sum(case when type1 = 'PP' and type2 = 'IN' then value end) as PPIN,
       sum(case when type1 = 'PP' and type2 = 'RN' then value end) as PPRN
from t
group by ID, LegacyID, date ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51368371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档