如何查询"选择是否存在"别的"选择另一个"程序?

时间:2017-10-20 14:07:57

标签: sql sql-server

以下是我要做的事情,创建一个新的CTE并从currentWindow中选择所有内容 其中存在任何数据,否则CTE应包含PastWindows中的所有数据。

    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 个答案:

答案 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()