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的“消息”选项卡中(您几乎肯定会看到)。它们是信息性警告而不是错误。它们从未困扰过我,但我认为将消息传回应用程序可能会有一些轻微的开销。