SQL选择COUNT(值=值)可能吗?

Dan*_*npe 8 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 = 2
GROUP  BY Users.Balance,
          Users.FreeBids  
Run Code Online (Sandbox Code Playgroud)

它说" Invalid Syntax Neat '='没有'='就可以完美地工作.我如何计算Burned = 1并且Burned = 0的行?

谢谢,丹

Mar*_*ith 18

使用CASE声明

COUNT(CASE WHEN Bids.Burned=0 THEN 1 END) AS 'ActiveBids', 
COUNT(CASE WHEN Bids.Burned=1 THEN 1 END) AS 'BurnedBids'
Run Code Online (Sandbox Code Playgroud)

有隐含的ELSE NULL.COUNT只计算NOT NULL值,这样就可以得到你需要的结果.

  • @Danpe - 如果你有'ANSI_WARNINGS`(你几乎可以肯定),它们会出现在SSMS的消息选项卡中.它们是信息警告而不是错误.他们从来没有打扰过我,但我认为将消息传回给你的应用程序可能会有一些轻微的开销. (2认同)