【问题标题】:Select max value in query for type在查询类型中选择最大值
【发布时间】:2019-04-03 05:54:42
【问题描述】:

我有疑问

select order_no,
       line_no,
       type_id,
       delivery_date
from   orders

值是

CO_01     1     A    2018-01-01
CO_01     2     A    2018-01-01
CO_01     3     B    2018-01-10 
CO_01     4     A    2018-01-01

总会有一个 type_id B 的交货日期不同。如何为所有行选择另一个名为 max_delivery_date 的列,该列将具有类型 B 的值 delivery_date ?

【问题讨论】:

    标签: oracle select plsql max


    【解决方案1】:

    在 B 类型的 select max 中添加:

     select order_no,
       line_no,
       type_id,
    
    (
      Select max(
       delivery_date) as max_delivery
    
      from   orders with type_id='B')  
    As max_delivery_date
    
     from   orders
    

    【讨论】:

      【解决方案2】:

      不确定您到底想要什么,但我们可以在这里尝试使用分析函数。下面对MAX 的调用将找到具有type_idB 的记录的delivery_date,每组记录对应一个order_no

      SELECT
          order_no,
          line_no,
          type_id,
          delivery_date,
          MAX(CASE WHEN type_id = 'B' THEN delivery_date END)
              OVER (PARTITION BY order_no) max_date
      FROM orders;
      

      Demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 2012-04-13
        • 2015-02-03
        • 2018-09-15
        相关资源
        最近更新 更多