同一id的多个响应-创建附加列以保留两个响应

nzrxty8p  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(224)

我有一个数据集,其中包含来自同一个人/id的多个响应(id的单独行,同一列中的响应)。我希望创建其他列(通过视图或创建/更新其他列)以将这些多个响应保留在一行中。我假设我需要将表本身连接起来,并使用另一个(顺序)id来完成这个任务?如有任何帮助,我们将不胜感激(请参阅下面的示例,抱歉格式化…)。
提前谢谢!
当前数据:

ID      Column1
------------------------
P1      Response1 
P1      Response2 
P2      Response1 
P2      Response2

所需数据:

ID      Column1a      Column1b
--------------------------------
P1      Response1     Response2
P2      Response1     Response2
jdzmm42g

jdzmm42g1#

一种选择使用 row_number() 和条件聚合。假设您希望按 completion_date ,如评论所示:

select
    id,
    max(case when rn = 1 then column1 end) column1a,
    max(case when rn = 2 then column1 end) column1b
from (
    select 
        t.*, 
        row_number() over(partition by id order by completion_date) rn
    from mytable t
) t
group by id

您可以扩展 select 多条件从句 max() s来处理每个 id .

相关问题