以下是我要做的事情,创建一个新的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中的所有数据
答案 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()