我正在尝试根据两个日期中的最大值来获取一列的值。
我已经尝试过,以获取最多两个日期。
SELECT VIN,
MAX(CASE WHEN DELIVERY_TYPE = 25 THEN TRANSACTION_DATE END) AS DELIVERY_DATE,
MAX(CASE WHEN DELIVERY_TYPE <> 25 THEN TRANSACTION_DATE END) AS TRANSACTION_DATE
FROM TABLE
WHERE VIN IN ('XYZ')
GROUP BY VIN;
这是我需要的,但是我需要交付代码。
VIN DELIVERY_DATE OTHER_DELIVERY DATE
XYZ 26-DEC-18 01-MAY-19
我怎么得到这个
VIN DELIVERY_DATE OTHER_DELIVERY DATE Delivery_code
XYZ 26-DEC-18 01-MAY-19 010
源数据是这样的
VIN TRANSACTION_DATE Delivery_code
XYZ 26-DEC-18 025
XYZ 01-MAY-19 010
编辑:新数据源
VIN TRANSACTION_DATE DELIVERY_TYPE
xzy 10-APR-19 025
xyz NULL 010
xzy 12-JUL-19 035
答案 0 :(得分:0)
您可以使用keep
:
SELECT VIN,
MAX(CASE WHEN DELIVERY_TYPE = 25 THEN TRANSACTION_DATE END) AS DELIVERY_DATE,
MAX(CASE WHEN DELIVERY_TYPE <> 25 THEN TRANSACTION_DATE END) AS TRANSACTION_DATE,
MAX(DELIVERY_CODE) KEEP (DENSE_RANK FIRST ORDER BY TRANSACTION_DATE DESC NULLS LAST) as DELIVERY_CODE
FROM TABLE
WHERE VIN IN ('XYZ')
GROUP BY VIN;