我有一个由多个连接子句构造的工作查询。其中一列是recorddate。我只想在以下条件下显示记录:recorddate>(整个报表的最大(recorddate)-40)天。换言之,记录的日期是最早的日期或40天前。我注意到我无法计算where子句中的date-40,因此我创建了一个date\cte查询来提供计算出的“旧日期”。
WITH date_CTE(PrevDate,sd) AS
(SELECT dateadd(DAY,-33,max(ScanDate)),ScanDate
FROM v_TthreatsCombined
GROUP BY scanDate)
SELECT MAX(prevDate) FROM date_CTE
我未能将“select max(prevdate)from date\ cte”的结果加入where。
查询有点像这样:
SELECT col1,col2.col3,ScanDate
FROM table1
Left Join ....
Left Join ...
WHERE condition1 AND (condition2 OR condition3) AND <SELECT MAX(prevDate) FROM date_CTE>
我走的路对吗?谢谢你的帮助。
阿莫斯
2条答案
按热度按时间zlwx9yxi1#
一个选项使用窗口函数。根据您的伪代码,这看起来像:
nx7onnlm2#
我只想用
CTE
(或只是一个子查询)来计算开始日期。不管怎样,你需要JOIN
这个CTE
或子查询到您的FROM
条款。我会对连接进行过滤。max date减去四十天返回表中最新的两个条目: