SQL 使用 where 子句按多列分组 returns 总是计数为 2

SQL group by multiple columns with where clause returns count of two always

我正在做一个 SQL 多列分组 returns 总是两个。

很明显,对原始数据的检查表明计数应该存在差异。

select distinct  col1,col2, col3, COUNT(*) as countDistinct FROM ourTable
  WHERE  ((ourDateEntered >= '20150811') and (col3>0) )
group by col1,col2, col3
order by col1,col2, col3

where 子句似乎使事情复杂化,但却是必需的....

这是 SSMS,2008 R2,但我不确定确切的版本在这里是否很重要。

语言是T-SQL.

查询运行,但计数始终为 2...

对原始数据的检查清楚地显示了计数的差异,尽管 2 将是数据的统计模式。

有谁知道如何获得准确的计数。

注意:我已经尝试过来自不同类似 postings 的建议,但它们不起作用,包括带有 "distinct" 关键字的建议,但是,我对任何与组的方法持开放态度通过或不同甚至另一种方法。

注意 2:不幸的是,我无法 post 轻松地对数据进行采样。明确地说,我想要一个不同的 (x,y,z) 三元组,其中 x y z 代表 col1、2 和 3

对我来说,解决方案是制作一个临时文件 table 以摆脱 where 子句:

SELECT * into #TempTable1
FROM
(SELECT col1, col2, col3, col4
FROM ourTable
where ((ourDate >= '20150811')) 
group by col1, col2, col3)c

然后查询工作(不需要的地方):

select distinct  col1,col2, col3, COUNT(*) as countDistinct FROM #TempTable1
group by col1,col2, col3
order by col1,col2, col3

注意:如果您只是想做一份报告,而不是修改东西,创建一个临时文件 table 并因此消除一些 where 子句可以大大简化通常需要的 Sql。