【问题标题】:Pivot in Redshift在 Redshift 中枢轴
【发布时间】:2020-06-23 22:42:20
【问题描述】:

您好,我有一张如下格式的表格

PN PI gender dob
1  11 M      YYYYMMDD 
1  12 F      YYYYMMDD 
2  21 F      YYYYMMDD 
2  22 M      YYYYMMDD 
3  31 M      YYYYMMDD
4  35 M      YYYYMMDD
4  36 M      YYYYMMDD

我正在尝试以以下格式打印它

PN Primary_gender joint_gender primary_dob  secondary_dob
1  M              F            YYYYMMDD     YYYYMMDD
2  F              M            YYYYMMDD     YYYYMMDD
3  M              [NULL]       YYYYMMDD     [NULL]
4  M              M            YYYYMMDD     YYYYMMDD

。 . .

这里的逻辑是对于每个 PN,min(PI) 是主要的,max(PI) 是joint。我尝试用 min 和 max 做一个案例陈述,但我坚持要得到正确的答案。任何帮助表示赞赏!

【问题讨论】:

  • 每个PN 总是只有两行吗? (如果不是,请添加更多示例,例如 1-row 和 3-rows。)PI 的值是否遵循任何规则?
  • 添加了更多记录,因为某些 PN 可能只有一条记录,而联合所有者的 PI 仅比主要所有者多一条

标签: sql amazon-redshift


【解决方案1】:

只使用条件聚合:

select pn,
       max(case when seqnum = 1 then gender end) as primary_gender,
       max(case when seqnum = 2 then gender end) as joint_gender,
       max(case when seqnum = 1 then dob end) as primary_dob,
       max(case when seqnum = 2 then dob end) as joint_dob
from (select t.*, row_number() over (partition by pn order by pi) as seqnum
      from t
     ) t
group by pn

【讨论】:

  • 戈登再次出击! :)
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 2020-09-30
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多