对当前行的SQL引用
您好在SQL中是否可以只引用当前行 我有以下SQL查询:对当前行的SQL引用,sql,count,Sql,Count,您好在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
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
现在看起来是这样的:
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
状态:
Id : int (Primary Key)
Date : date
Status : int (Foreign Key)
Id : int (Primary Key)
Status : varchar
表中还有一些列,但不相关
赢应该是状态为1的所有赌注的计数金额
地位:
1韩元
2-丢失
3-打开您正在寻找条件聚合。我想我明白你是怎么想的。因此,答案是使用
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);
案例
在一行内执行条件(所有列都来自同一行)。注意:当按月份聚合时,通常也应按年份聚合
注意:以上是ANSI标准SQL,基本上所有数据库都支持。有些数据库中有快捷方式。例如,Postgres支持更接近您要求的
FILTER
子句。如果status
是0/1指示符,请使用sum()
而不是count()
。在SQL中没有“current”行。SQL是基于集合的,它不是一种逐行计算的过程语言。请看一下我编辑的问题,很抱歉问题不清楚。希望现在更好。请看一下我编辑的问题,并为不清楚的问题感到抱歉。希望现在更好。@Gohan。我认为这解决了你修改过的问题。