在查询中选择最大值作为类型

时间:2018-10-30 08:24:05

标签: oracle select plsql max

我有查询

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?

2 个答案:

答案 0 :(得分:0)

在类型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

答案 1 :(得分:0)

不确定您要的是什么,但是我们可以在此处尝试使用解析函数。对于对应于单个MAX的每组记录,下面对delivery_date的调用将找到type_idB的记录order_no。 / p>

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;

enter image description here

Demo