【问题标题】:How to get latest inserted value on not grouped column?如何在未分组的列上获取最新插入的值?
【发布时间】:2014-04-19 17:52:24
【问题描述】:

如何从下面的查询中以更有效和优雅的方式获取 MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_FOR_ID_CONTEXT ?

SELECT MAX(MY_DATE_COLUMN),
 ID,
 listagg(SOME_COLUMN, '') within GROUP (ORDER BY MY_DATE_COLUMN),
 SUBSTR(
      listagg(MY_NUMBER, ';') within GROUP (ORDER BY MY_DATE_COLUMN DESC),
      1,
      instr(
             listagg(MY_NUMBER, ';') within GROUP (ORDER BY MY_DATE_COLUMN DESC),'-') - 1
           ) as MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_IN_ID_CONTEXT
 FROM MY_TABLE
 GROUP BY ID;

【问题讨论】:

    标签: sql oracle11g query-tuning


    【解决方案1】:

    如果我理解正确,你想要keep

    SELECT MAX(MY_DATE_COLUMN), ID,
           listagg(SOME_COLUMN, '') within GROUP (ORDER BY MY_DATE_COLUMN),
           max(MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_IN_ID_CONTEXT)
               keep (dense_rank first order by MY_DATE_COLUMN DESC)
    FROM MY_TABLE
    GROUP BY ID;
    

    全部大写并不能真正帮助传达您想要做什么。

    【讨论】:

    • 占星家在 SO 上宣布 KEEP 的一周。 :)
    • 它当然更优雅,尽管成本相同,但我认为在生产环境中查询会更快。谢谢。
    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 2019-06-28
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多