【问题标题】:how can i show result of last record in every row in oracle sql如何在 oracle sql 的每一行中显示最后一条记录的结果
【发布时间】:2019-07-23 01:13:49
【问题描述】:

我有一种情况,我必须在 Oracle SQL 的每一行中显示最后一条记录的结果

例子:-

**brand**  **result**  **year_month**
  nike         200        2018-01
  nike         200        2018-02
  nike         200        2018-03
  nike         300        2018-04

我要求的是

**brand**  **result**  **year_month**
  nike         300        2018-01
  nike         300        2018-02
  nike         300        2018-03
  nike         300        2018-04

根据上个月的记录,我每个月都必须宣传我在 BIG MNC 面试中遇到的这个问题

【问题讨论】:

  • 您是否正确理解了问题或希望我们先理解它?
  • “每一行的最后一条记录”对我来说没有意义。您的意思是“每个表中的最后一条记录”吗?还有——“大型跨国公司”?你能澄清一下这是什么意思吗?谢谢。
  • 你是对的!每个表中的最后一条记录。

标签: sql oracle oracle11g oracle12c


【解决方案1】:

这样的?

  • partition 确保每个品牌都有自己的成果
  • order by 告诉它获取属于最后一个 year_monthresult

我修改了输入数据以显示 50 不像属于最后一个 year_month 的值那么明显。


SQL> with test (brand, result, year_month) as
  2    (select 'nike', 200, '2018-01' from dual union all
  3     select 'nike', 200, '2018-02' from dual union all
  4     select 'nike', 200, '2018-03' from dual union all
  5     select 'nike', 50 , '2018-04' from dual
  6    )
  7  select brand,
  8         first_value (result) over (partition by brand order by year_month desc) result,
  9         year_month
 10  from test
 11  order by year_month ;

BRAN     RESULT YEAR_MO
---- ---------- -------
nike         50 2018-01
nike         50 2018-02
nike         50 2018-03
nike         50 2018-04

SQL>

【讨论】:

    【解决方案2】:
    SELECT brand, Max(result) OVER(PARTITION BY brand), year_month
    FROM brand;
    

    问题不清楚。这是你要找的吗?

    【讨论】:

      【解决方案3】:
      select brand,
             (select result 
              from (
                  select result
                  from your_table
                  order by to_date(year_month,'yyyy-mm') desc
                  ) 
              where rownum = 1
              ) result,
             year_month
      from your_table;
      

      【讨论】:

        猜你喜欢
        • 2011-12-17
        • 1970-01-01
        • 2011-09-06
        • 2021-11-04
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多