SQL在哪里或有

时间:2016-05-23 13:22:52

标签: sql sql-server tsql

如果可能,我想将其保留在一个查询中。基本上,我想获得在过去5天内看到的任何人的ID,或者已被看到超过两次,并将其保留在同一查询中。如果将它分成几个子查询或临时表是最佳途径,那么我可以走那条路。我只想尽可能地浓缩它。任何建议都将不胜感激。

<aggregator>

3 个答案:

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