2017-12-15 12 views
2

私は以下のテーブルを持っています:私はfirstDateとEndDateの間を探していますが、EndDate = 09/09/9000ではsysdateを使用しています。ABS付きケース式

表C

FirstDate  EndDate  id 
12/28/15  09/09/9000  1 

私は以下のように動作しますが、これを書くためのより良い方法がありますがありますか?

あなたが派生テーブルなしでそれを書くことができます
SELECT DISTINCT 
id, 
ABS(TO_DATE(C.FirstDate) - TO_DATE(C.EndDate)) AS Between_days 

     FROM (SELECT id, FirstDate, 
      CASE WHEN TO_CHAR(C2.EndDate,'MM/DD/YYYY') = '09/09/9000' THEN TRUNC(SYSDATE) 
       ELSE C2.EndDate 
       END AS EndDate, 
       C2.ID,     
       FROM tableC C2) C 

答えて

1

SELECT DISTINCT 
    id, 
    CASE WHEN TO_CHAR(EndDate,'MM/DD/YYYY') = '09/09/9000' 
     THEN ABS(TO_DATE(FirstDate) - TRUNC(SYSDATE)) 
     ELSE ABS(TO_DATE(FirstDate) - TO_DATE(EndDate)) 
    END as Between_days 
FROM tableC 
+0

はい、ありがとうございました! – John