2014-01-21 3 views
-2
SELECT 
    TRANSACTION_ID, 
    (SELECT CASE WHEN CLOSE_DATE = NULL 
    THEN 
     round(sysdate - created_date) 
    ELSE ROUND(CLOSE_DATE - CREATED_DATE) 
) as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913 
+0

Что происходит, когда вы запускаете это - то, что именно ваш вопрос? –

ответ

1

У вас есть дополнительные select, вы теряете в end, и вы не можете проверить null с операторами равенства - null никогда не равно или не равен, либо , даже сам.

Это будет дальше, чтобы вы:

SELECT 
    TRANSACTION_ID, 
    CASE 
    WHEN CLOSE_DATE IS NULL 
    THEN round(sysdate - created_date) 
    ELSE ROUND(CLOSE_DATE - CREATED_DATE) 
    END as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913 

Вы можете использовать NVL() к этому немного упростить:

SELECT TRANSACTION_ID, 
    ROUND(NVL(CLOSE_DATE, SYSDATE) - CREATED_DATE) as NODAYS 
FROM TBL_TRANSACTION 
WHERE CREATED_BY = 101913 
+0

'NVL' должно быть в' CLOSE_DATE'. – Noel

+0

@EatAPeach - oops; Спасибо! –

Смежные вопросы