以下是该方案:
我有一个包含3列的表:'KeyColumn','SubKeyColumn'和'BooleanColumn',其中前两个是表的主键。
对于我的查询,我想计算'KeyColumn'中任何给定值的行数,并且我还想知道哪些值为'BooleanColumn'的值为true。我最初的想法是创建一个这样的查询:
SELECT
COUNT(*)
,COUNT(CASE WHEN BooleanColumn = 1 THEN 1 ELSE 0 END)
FROM
MyTable
GROUP BY
KeyColumn
然而,第二部分不起作用(我不完全确定为什么我认为它会开始)。是否可以在一个查询中执行此类操作?或者我是否需要进行多次查询才能实现这一目标?
答案 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))