Tsql 统计去年发生的所有事件

Tsql 统计去年发生的所有事件,tsql,Tsql,我有一个问题,虽然我不能真正深入细节 请回答以下问题: SELECT DISTINCT tableOuter.Property, (SELECT COUNT(ID) FROM table AS tableInner WHERE tableInner.Property = tableOuter.Property) FROM table AS tableOuter WHERE tableOuter.DateTime > DATEADD(year, -1, GETDATE()) AND ta

我有一个问题,虽然我不能真正深入细节

请回答以下问题:

SELECT DISTINCT tableOuter.Property, (SELECT COUNT(ID) FROM table AS tableInner WHERE tableInner.Property = tableOuter.Property)
FROM table AS tableOuter
WHERE tableOuter.DateTime > DATEADD(year, -1, GETDATE())
  AND tableOuter.Property IN (
   ...
)
在in子句中选择每个属性的一个实例,以及具有该属性的行在去年发生的频率


我刚刚阅读了MSDN上的相关子查询,但不确定是否正确。

如果我正确理解您的意思,您希望获取去年每个
属性的所有发生情况,对吗

然后使用
groupby
HAVING
子句:

SELECT tableOuter.Property, COUNT(*) AS Count
FROM table AS tableOuter
GROUP BY tableOuter.Property
HAVING tableOuter.DateTime > DATEADD(year, -1, GETDATE())
AND tableOuter.Property IN ( .... )

... 是一个包含25个值的列表,但返回的行只有16个。嗯。这可能是因为
distinct
它删除了相同的行(并且只返回其中一行)。谢谢,我想它删除了一些没有被剪切的行。但如果不是这样的话,它会执行我希望它执行的操作,对吗?我得到一个SQL错误:“tableOuter.Property”列在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。在我将HAVING子句中的所有内容放入FROM后面的WHERE子句中后,错误消失了。