我的表格survey_status_history
包含caseId, strsurveystatus, dtcreated
列。
我想从表中获取所有状态的记录,但在status = 'pending'
时,对于这种情况,查询应仅返回最近五天的记录。
以下是我的查询。
select *
from survey_status_history ssh
where nisactive = 1
and case when ssh.strsurveystatus = 'pending'
then ssh.dtcreated > DATEADD(DAY, 5 , GETDATE())
end
但我在>
请建议查询中的更改。 提前谢谢。
答案 0 :(得分:1)
SQL Server不了解布尔类型。我建议在没有case
的情况下写这个:
select *
from survey_status_history ssh
where nisactive = 1 and
(ssh.strsurveystatus <> 'pending' or
ssh.dtcreated > DATEADD(DAY, 5 , GETDATE())
);
这假定strsurveystatus
永远不会NULL
。如果它是NULL
,则逻辑稍微复杂一些。
答案 1 :(得分:0)
希望,这符合您的要求。
SELECT *
FROM SURVEY_STATUS_HISTORY SSH
WHERE NISACTIVE = 1 AND
(SSH.STRSURVEYSTATUS <> 'PENDING' -- if not pending
OR(SSH.STRSURVEYSTATUS = 'PENDING' AND SSH.DTCREATED >= DATEADD(DAY, -5 , GETDATE()))) -- if pending and last 5 days