【问题标题】:Dynamic oracle sql query based on start and end date [duplicate]基于开始和结束日期的动态oracle sql查询[重复]
【发布时间】:2020-09-29 20:21:59
【问题描述】:

我的桌子:

根据开始和结束日期,我需要得到类似这样的输出:

假设开始日期为 2020 年 9 月 1 日,结束日期为 2020 年 9 月 9 日(动态提供)。 根据上述日期,日期应为列名,id 应为相应列下的数据。 如果相应日期不存在 id,则在输入表中它应该为 null。

我无法弄清楚对此的查询。拜托,有人建议我写上面的查询。

提前致谢。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    你可以试试这个:

    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

    【讨论】:

    • 感谢您的查询....如果我有 2 个同名的不同 ID 怎么办...在这种情况下 max() 将不起作用。我需要检索两个 id..
    • 我有一个替代建议,不知道你是否会喜欢它:dbfiddle.uk/…
    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多