如果可能,我想将其保留在一个查询中。基本上,我想获得在过去5天内看到的任何人的ID,或者已被看到超过两次,并将其保留在同一查询中。如果将它分成几个子查询或临时表是最佳途径,那么我可以走那条路。我只想尽可能地浓缩它。任何建议都将不胜感激。
<aggregator>
答案 0 :(得分:3)
将日期条件移至HAVING
子句:
select ID, Name
from sometable a
group by id, name
having count(id) > 2
or max(cast(a.[appointment date] as date)) > cast(GETDATE() - 5 as date)
答案 1 :(得分:0)
我希望以下查询可以回答你的问题。
选择ID 来自某个人 其中演员(a。[约会日期]为日期)&gt;施放(GETDATE() - 5作为日期) 按ID分组 有计数(id)&gt; 2
答案 2 :(得分:0)
与问题中的尝试查询做同样的事情。
SELECT
[Filtered].[Id],
[Filtered].[Name]
FROM
(
SELECT
[Id],
[Name]
FROM
[some table] [A]
WHERE
CAST([A].[appointment date] AS DATE) >
CAST(GETDATE() - 5 AS DATE)
) [Filtered]
GROUP BY
[Filtered].[Id],
[Filtered].[Name]
HAVING
COUNT([Filtered].[Id]) > 2