微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 如何使用SUM和CASE计算胜负?

我正在使用sql Server 2008

我试图计算任何给定自行车的输赢.每次用户投票时,他对一辆自行车投票(1)并对另一辆自行车投票(0).

我的投票表如下所示:

VoteID --- BikeID ---- Vote
1          100         1
2          101         0
3          100         0
4          101         1
5          102         1
6          100         0
7          102         0
8          101         1

当我为特定的自行车运行查询时,我希望我的结果看起来像这样

Wins -- Losses
5       6

现在,我的结果看起来像这样:

Wins --- Losses
5        NULL
NULL     6

我的查询如下所示:

SELECT  SUM(CASE WHEN Vote = 1 THEN 1 END) AS Wins,SUM(CASE WHEN Vote = 0 THEN 1 END) AS Losses
FROM     Votes
WHERE    BikeID = 101
GROUP BY Vote

要将结果放在一行,我需要做什么?

解决方法

SELECT  SUM(CASE WHEN Vote = 1 THEN 1 ELSE 0 END) AS Wins,SUM(CASE WHEN Vote = 0 THEN 1 ELSE 0 END) AS Losses
FROM     Votes
WHERE    BikeID = 101

问题是你的案例陈述没有涵盖所有条件,因此在他们没有考虑的情况下返回null.

此外,您不需要投票组,因为您实际上并未在聚合之外选择投票.

原文地址:https://www.jb51.cc/mssql/78918.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐