我使用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日 |
使用
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)
)