SQL查询语句返回不同的结果

时间:2016-12-21 21:54:16

标签: sql sql-server

新手参加论坛。我正在尝试编写一个MS SQL查询,该查询返回过去24小时内唯一用户登录的数量。我不是SQL专家。以下是我的两个查询。第二个是第一个的扩展,我希望按日期和小时对结果进行分组。我的问题是,第二个查询返回的结果大于第一个。我错过了什么?感谢\

1ST

SELECT COUNT(DISTINCT(RESOURCE_ID)) AS 'UniqueLogonUsers'
FROM live.AUDIT_LOG  WITH (NOLOCK) 
WHERE AUDIT_TYPE = 0  AND AUDIT_TIME >= DateAdd(hh, -24, GETDATE())

2ND

SELECT  CAST(AUDIT_TIME AS DATE) AS 'WhichDate',
        DATEPART(hh, AUDIT_TIME) AS 'WhichHour',
        COUNT(DISTINCT(RESOURCE_ID)) AS 'UniqueLogonUsers'
FROM live.AUDIT_LOG  WITH (NOLOCK) 
WHERE AUDIT_TYPE = 0  AND AUDIT_TIME >= DateAdd(hh, -24, GETDATE())
GROUP BY CAST(AUDIT_TIME AS DATE), DATEPART(hh, AUDIT_TIME)
ORDER By CAST(AUDIT_TIME AS DATE) DESC, DATEPART(hh, AUDIT_TIME) DESC

2 个答案:

答案 0 :(得分:1)

您的第一个查询应该只返回1行 - 过去24小时内的登录次数。您的第二次休息计入每个日/小时组合的行,因此将有更多行 - 每个组合一行,以及该小时内登录的计数。

答案 1 :(得分:0)

可能是因为您正在使用GETDATE(),每次都会返回不同的值吗?您可以尝试在那里设置固定日期而不是GETDATE()吗?