SQL引用当前行

时间:2015-12-18 15:11:36

标签: sql count

Hello是否可以在SQL中仅引用当前行?

我有以下SQL查询:

SELECT MONTH(Date) as Date, COUNT(Id) as Bets, COUNT(Status) as Won, FROM Bets
GROUP BY Datum

现在我想在他们的几个月中计算所有赢得的赌注。

它应该是这样的:

Month | Bets | Won

1     | 1    | 0

11    | 4    | 2

12    | 2    | 1

现在看起来像这样:

Month | Bets | Won

1     | 1    | 1

11    | 4    | 4

12    | 2    | 2

我现在该如何为Count(Status)子句添加条件或处理此问题?

感谢您的帮助。

编辑:

我有两张桌子:

投注:

Id : int (Primary Key)

Date : date

Status : int (Foreign Key)

状态:

Id : int (Primary Key)

Status : varchar

表中还有一些但不相关的列。

赢得应该是计数状态如1的所有投注的数量。

状态:

1 - 赢了

2 - 失去了

3 - 打开

1 个答案:

答案 0 :(得分:1)

您正在寻找条件聚合。我想我明白你是怎么想的。所以,答案是您使用case

SELECT MONTH(Date) as Date, COUNT(Id) as Bets,
       SUM(CASE WHEN Status = 1 THEN 1 ELSE 0 END) as Won
FROM Bets
GROUP BY MONTH(Date);

case正在执行条件"在"一行(所有列都来自同一行)。请注意,按月汇总时,通常也应按年汇总。

作为注释:以上是ANSI标准SQL,基本上所有数据库都支持。某些数据库中有快捷方式。例如,Postgres支持FILTER子句,它更接近你的要求。