SQL选择计数(值=值)是否可能?

SQL选择计数(值=值)是否可能?,sql,sql-server,select,count,Sql,Sql Server,Select,Count,我想计算所有只有我想要的值的行,如下所示: SELECT Users.Balance, Users.FreeBids, COUNT(Bids.Burned = 0) AS 'ActiveBids', COUNT(Bids.Burned = 1) AS 'BurnedBids' FROM Users INNER JOIN Bids ON Users.ID = Bids.BidderID WHERE Users.ID =

我想计算所有只有我想要的值的行,如下所示:

SELECT Users.Balance,
       Users.FreeBids,
       COUNT(Bids.Burned = 0) AS 'ActiveBids',
       COUNT(Bids.Burned = 1) AS 'BurnedBids'
FROM   Users
       INNER JOIN Bids
         ON Users.ID = Bids.BidderID
WHERE  Users.ID = 2
GROUP  BY Users.Balance,
          Users.FreeBids  
它说“
无效语法”=”
如果没有“=”,它就可以正常工作。 如何计算其中已刻录=1且已刻录=0的行数

谢谢,
Dan

使用
案例
语句

COUNT(CASE WHEN Bids.Burned=0 THEN 1 END) AS 'ActiveBids', 
COUNT(CASE WHEN Bids.Burned=1 THEN 1 END) AS 'BurnedBids'

有一个隐式的
ELSE NULL
COUNT
只计算
非NULL
值,因此这将为您提供所需的结果。

在本例中,我更喜欢在case语句中使用SUM和ELSE 0来消除此代码导致的“通过聚合消除的NULL值”警告。@Danpe-
COUNT(NULLIF(Bids.Burned,1))
计数(NULLIF(Bids.Burned,0))
如果该列中唯一有效的值是
0,1
并且可能是
NULL
@Dave-没想到
COUNT
会提出这个问题,但它显然会提出。是的,如果警告导致任何问题,这是另一个选项。@Martin感谢较短的版本:)我在哪里看到警告?它们会打扰我吗?@Danpe-如果您有
ANSI_警告
,它们会出现在SSMS的“消息”选项卡中(您几乎肯定会看到)。它们是信息性警告而不是错误。它们从未困扰过我,但我认为将消息传回应用程序可能会有一些轻微的开销。