我对SQL-SERVER和堆栈溢出还很陌生,所以如果我的问题措辞错误或者太幼稚,请原谅。
我试着搜索,但找不到我要找的东西。
我有一个表,其中唯一标识符列(varchar 50)
,另一个Column1的INT
的值为1、2、3或4。我正在尝试创建一个SELECT
结果集,其中e1d3d1包含Column1中值小于4的所有记录,另一个COUNT
返回Column1等于4的记录数。可以在一个查询中创建此结果集吗?
理想情况下,我希望我的结果集如下所示:
Total Records Records w/ *column1* < 4 Records w/ *column1* = 4
=========== ================== ================
1000 850 150
在完成一些搜索后,我尝试了以下几种方法:
SELECT COUNT(unique_id) 'Total'
, COUNT(CASE
WHEN column1 = 4 THEN '1'
ELSE '0'
END) AS 'Records w/ 4'
, COUNT(CASE
WHEN column1 < 4 THEN '1'
ELSE '0'
END) AS 'Records < 4'
FROM mytable
;
它返回一个结果集,其中‘Record w/4’和‘Total’都等于相同的数字。
3条答案
按热度按时间wn9m85ua1#
试试这个-
a6b3iqyw2#
您只是在寻找一个简单的条件聚合,如下所示
axr492tv3#
为此,我更喜欢使用
sum()
,但您也可以使用count()
。您的方法不起作用,因为count()
计算非NULL
值的数量,而then
和else
都返回非NULL
值。因此,您还可以执行以下操作:
请注意,我重命名了列,因此它们不需要转义。仅对字符串和日期常量使用单引号。