我无法理解这段代码的错误
ID AccountID Quantity
1 1 10 Sum = 10
2 1 5 = 10 + 5 = 15
3 1 2 = 10 + 5 + 2 = 17
4 2 7 = 7
5 2 3 = 7 + 3 = 10
SELECT ID, AccountID, Quantity,
SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT,
FROM tCariH
Run Code Online (Sandbox Code Playgroud)
And*_*y M 27
好像您希望查询返回运行总计,但它必须为两个分区提供相同的值AccountID.
要获得运行总计SUM() OVER (),需要在之后添加ORDER BY子句PARTITION BY …,如下所示:
SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY ID)
Run Code Online (Sandbox Code Playgroud)
但请记住,并非所有数据库系统都支持窗口聚合函数ORDER BY的OVER子句.(例如,SQL Server直到最新版本SQL Server 2012才支持它.)
如果你使用SQL 2012,你应该尝试
SELECT ID,
AccountID,
Quantity,
SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY AccountID rows between unbounded preceding and current row ) AS TopBorcT,
FROM tCariH
Run Code Online (Sandbox Code Playgroud)
如果可用,按日期列更好的排序.
小智 6
查询将是这样的:
SELECT ID, AccountID, Quantity,
SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT
FROM #Empl ORDER BY AccountID
Run Code Online (Sandbox Code Playgroud)
Partition by 与 group by 类似。这里我们按 AccountID 分组,因此 sum 将对应于 AccountID。
第一种情况, AccountID = 1 ,然后 sum(quantity) = 10 + 5 + 2 => 17 & For AccountID = 2,然后 sum(Quantity) = 7+3 => 10
所以结果看起来像附加的快照。
| 归档时间: |
|
| 查看次数: |
164415 次 |
| 最近记录: |