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。
我正在做一个 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。