2014-03-06 26 views
1

我正在爲一種情況運行此查詢,但我有兩種情況:如果SYSDATE =星期一,則運行「SYSDATE-2」,否則運行「SYSDATE-1」。我通過Excel中的OLE連接連接到數據庫,所以我不確定我可以使用存儲過程。有沒有辦法編寫查詢來完成這兩種情況?感謝所有幫助。系統日期減2個不同的日期

SELECT 
    DISTINCT VERSION_NAME VERSION, MIN(RECONCILE_START_DT) DATES 
FROM 
    SDE.GDBM_RECONCILE_HISTORY 
WHERE 
    RECONCILE_RESULT = 'Conflicts' 
AND 
    RECONCILE_START_DT > SYSDATE -1 
GROUP BY VERSION_NAME 
ORDER BY 2 ASC NULLS LAST 

回答

0

您可以在您的WHERE條件中使用CASE語句,以便在星期一減去2或在本週其餘時間減去1。 TO_CHAR(DATE,「d」)提供開頭星期天星期= 1。因此星期一是2

試試這個:

SELECT 
    VERSION_NAME AS VERSION, 
    MIN(RECONCILE_START_DT) AS DATES 
FROM 
    SDE.GDBM_RECONCILE_HISTORY 
WHERE 
    RECONCILE_RESULT = 'Conflicts' 
AND 
    RECONCILE_START_DT > SYSDATE - 
     CASE TO_CHAR(SYSDATE, 'D') 
      WHEN '2' THEN 2 
      ELSE 1 END 

GROUP BY VERSION_NAME 
ORDER BY 2 ASC NULLS LAST 

而且你不需要DISTINCT關鍵字爲你」已經使用GROUP BY。

+0

謝謝trieber。 「CASE」,一款供我探索的新玩具。並感謝編輯我原來的帖子,使其他人更容易找到和閱讀。 – user3389155