2014-01-21 22 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;謝謝! –