Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算SQL中多行之间的差异_Sql_Sql Server - Fatal编程技术网

如何计算SQL中多行之间的差异

如何计算SQL中多行之间的差异,sql,sql-server,Sql,Sql Server,用户 Id Name --------------------- 1 Robert Baratheon 2 Cercei Lanister 3 Jon snow 交易 Id UserId Date Amount NewBalance NewTotal --------------------------------------------------------- 1 1 2020/03/21 100 100

用户

 Id Name
---------------------
1   Robert Baratheon
2   Cercei Lanister
3   Jon snow
交易

Id  UserId   Date     Amount    NewBalance   NewTotal
---------------------------------------------------------
1   1      2020/03/21   100        100         100
2   1      2020/04/06   100        200         200
3   1      2020/04/07   25         225         225
4   2      2020/03/03   100        100         100
5   2      2020/04/07   30         130         130
6   3      2020/04/06   250        250        250
newBalance
是截至该日期所有金额的总和,
newTotal
是截至该日期所有正金额的总和

我想订本周谁赚的钱最多

所需结果:

UserId   UserName     Amount_made_this_week
---------------------------------------------
1   3      Jon snow           250
2   1      Robert Baratheon   125
3   2      Cercei Lanister    30

我该如何用SQL编写呢?

您可以汇总本周的
筛选金额,然后排序结果:

SELECT Transactions.UserId, Users.Name, Sum(Transactions.Amount) as amount_made_this_week
FROM Transactions
    INNER JOIN Users
        ON Transactions.UserID = Users.ID
WHERE Transactions.Date BETWEEN #04/05/2020# AND #04/11/2020#
GROUP BY Userid, Name
ORDER BY amount_made_this_week DESC;

您还可以将日期范围独立于绑定变量,始终设置一周的周期,如:

SELECT T.UserId, U.Name, Sum(T.Amount) as Amount_made_this_week
FROM Transactions T
    INNER JOIN Users U
       ON T.UserID = U.ID 
WHERE T.Date > (SYSDATE-7)
GROUP BY Userid, Name
ORDER BY Amount_made_this_week DESC;

请展示一些样本数据和预期结果。你到底有什么问题?从约会中得到一周的时间?聚合行以获取其总和?还有什么?定义“本周”。今天加上最后六天,因为一周有七天?今天加上最后两天,因为今天是周三,一周从周一开始?一周是从上周日到现在,这是SQL Server的吗?在我看来像甲骨文。