2017-10-20 72 views
-1

這是我正在嘗試做的事情,創建一個新的CTE並從currentWindow中選擇一切,如果存在 任何數據,則CTE應該包含PastWindows中的所有內容。如何查詢「select if exists」else「select another」procedure?

currentWindow as (
select * from Window oew 
where oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE() 
) 
    , PastWindows as 
(
     select * from Window oew 
     where oew.StartDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE() 
     OR oew.EndDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE() 
) 

像這樣的事情

FinalOEWindoToUse as 

我明白,這可以用一個case語句爲一列完成,但在這種情況下,我希望所有如果數據存在,則來自表A的列和來自表B的所有數據(如果存在的話)

+1

您使用的是MS SQL Server還是Oracle?不要標記不涉及的產品。 – jarlh

+0

編輯後,sql服務器。 –

+0

所以你想從這兩個查詢的數據? –

回答

0

這樣的事情:

IF EXISTS(SELECT NULL FROM Window oew WHERE oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE()) 
    SELECT * FROM Window oew WHERE oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE() 
ELSE 
    SELECT * FROM Window oew WHERE oew.StartDate BETWEEN DATEADD(YYYY, -1, GetDate()) AND GETDATE() OR oew.EndDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE()