T-SQL 2005:计算所有行和行符合标准

时间:2010-06-25 19:21:16

标签: sql sql-server sql-server-2005 tsql aggregate-functions

以下是该方案:

我有一个包含3列的表:'KeyColumn','SubKeyColumn'和'BooleanColumn',其中前两个是表的主键。

对于我的查询,我想计算'KeyColumn'中任何给定值的行数,并且我还想知道哪些值为'BooleanColumn'的值为true。我最初的想法是创建一个这样的查询:

SELECT
   COUNT(*)
   ,COUNT(CASE WHEN BooleanColumn = 1 THEN 1 ELSE 0 END)
FROM
   MyTable
GROUP BY
   KeyColumn

然而,第二部分不起作用(我不完全确定为什么我认为它会开始)。是否可以在一个查询中执行此类操作?或者我是否需要进行多次查询才能实现这一目标?

3 个答案:

答案 0 :(得分:5)

在第二部分中将COUNT更改为SUM。 ;)

答案 1 :(得分:2)

... CASE WHEN BooleanColumn = 1 THEN 1 ELSE NULL END ...

COUNT计算NON-NULL行。

答案 2 :(得分:0)

你也可以做SUM(CAST(BooleanColumn AS TINYINT))