如何使用行数值将日期填充到单独的列中

问题描述 投票:0回答:1

我使用case语句但无法达到结果(如下)

case when rownum=1  then DATE else 'null' end as Col1,
case when rownum=1  then DATE else 'null' end as Col2,
身份证 COl1 第 2 栏
1 2000 年 1 月 1 日
1 2000 年 1 月 2 日

当 rownum=1 时,col1 应该填充 rownum2 col2 应该填充,依此类推...最多 10

我的日期如下所示 数据:

身份证 日期 行号
1 2000 年 1 月 1 日 1
1 2000 年 1 月 2 日 2
2 2000年12月30日 1
2 2000年12月31日 2

预期结果:

身份证 COl1 第 2 栏
1 2000 年 1 月 1 日 2000 年 1 月 2 日
2 2000年12月30日 2000年12月31日
sql oracle
1个回答
0
投票

使用

GROUP BY
将多行聚合为一行:

SELECT id,
       MAX(CASE row_num WHEN 1 THEN date_column END) AS col1,
       MAX(CASE row_num WHEN 2 THEN date_column END) AS col2
FROM   table_name
GROUP BY id

或者,为了达到同样的效果,

PIVOT
:

SELECT *
FROM   table_name
       PIVOT (
         MAX(date_column)
         FOR rn IN (1 AS col1, 2 AS col2)
       )
© www.soinside.com 2019 - 2024. All rights reserved.