SQL选择COUNT(值=值)可能吗?
问题描述:
我要计算所有只拥有价值我想这样的行:SQL选择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
它说:“Invalid Syntax Neat '='
它完全没有‘=’ 我怎么能算被烧毁= 1的行。在他们和他们中的烧伤= 0?
感谢, 丹
答
使用CASE
声明
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
只能算作NOT NULL
值,所以这会给你你需要的结果。
感谢的人就像魅力:) 什么短?笑 – Danpe 2011-04-24 22:52:49
我更喜欢在这种情况下使用SUM在case语句的ELSE 0来消除警告说,这个代码将导致“通过聚合空值已消除”。 – 2011-04-24 22:53:41
@Danpe - COUNT(NULLIF(Bids.Burned,1))'COUNT(NULLIF(Bids.Burned,0))'如果该列中唯一有效值为'0,1'且可能为'NULL' 。 – 2011-04-24 22:55:36