【发布时间】:2020-09-29 20:21:59
【问题描述】:
我的桌子:
根据开始和结束日期,我需要得到类似这样的输出:
假设开始日期为 2020 年 9 月 1 日,结束日期为 2020 年 9 月 9 日(动态提供)。 根据上述日期,日期应为列名,id 应为相应列下的数据。 如果相应日期不存在 id,则在输入表中它应该为 null。
我无法弄清楚对此的查询。拜托,有人建议我写上面的查询。
提前致谢。
【问题讨论】:
我的桌子:
根据开始和结束日期,我需要得到类似这样的输出:
假设开始日期为 2020 年 9 月 1 日,结束日期为 2020 年 9 月 9 日(动态提供)。 根据上述日期,日期应为列名,id 应为相应列下的数据。 如果相应日期不存在 id,则在输入表中它应该为 null。
我无法弄清楚对此的查询。拜托,有人建议我写上面的查询。
提前致谢。
【问题讨论】:
你可以试试这个:
SELECT * FROM
(
SELECT name, dat, id
FROM tbl
)
PIVOT
(
max(id)
FOR dat IN ('01-Sep-2020', '02-Sep-2020', '03-Sep-2020', '04-Sep-2020', '05-Sep-2020', '06-Sep-2020', '07-Sep-2020')
)
ORDER BY name;
https://dbfiddle.uk/?rdbms=oracle_18&fiddle=63413c3d5ce0e3a67e9c18d0fe39b21f
【讨论】: