【发布时间】:2015-08-31 09:54:30
【问题描述】:
请帮忙解决这个问题
我想按 date1 分组,然后按日期升序排序,并用累积结果更新 RunningTotal 字段
到目前为止,这就是我所拥有的
CREATE TABLE dbo.RunningTotal (
date1 date
,Entry int
,RunningTotal int
)
INSERT INTO dbo.RunningTotal (date1,Entry,RunningTotal)VALUES('2015-01-03',100,NULL)
INSERT INTO dbo.RunningTotal (date1,Entry,RunningTotal)VALUES('2015-02-03',200,NULL)
INSERT INTO dbo.RunningTotal (date1,Entry,RunningTotal)VALUES('2015-05-03',300,NULL)
INSERT INTO dbo.RunningTotal (date1,Entry,RunningTotal)VALUES('2015-07-13',400,NULL)
INSERT INTO dbo.RunningTotal (date1,Entry,RunningTotal)VALUES('2015-01-03',-500,NULL)
UPDATE dbo.RunningTotal
SET RunningTotal = RT2.RunningTotal
FROM dbo.RunningTotal RT1
INNER JOIN (
SELECT
Entry
,(SELECT SUM(Entry) FROM dbo.RunningTotal WHERE Entry <= rt.Entry) As RunningTotal
FROM dbo.RunningTotal rt
) RT2
ON RT1.Entry = RT2.Entry
SELECT * FROM dbo.RunningTotal
但是在这个选择中我没有考虑日期和分组
谢谢!!!
【问题讨论】:
-
您能否指定要按日期等分组的确切选择。
-
什么版本的 SQL-Server?
-
请发布预期的输出。
-
您使用的是哪个 sql-server 版本?在 2012 年,有专门用于此目的的窗口函数(Lead-Lag)。在以前的版本中,它有点不同。
-
@Amir:你不需要 Lead() 或 lag(),一个简单的
sum(entry) (over order by date1)就可以完成这项工作(但是是的,这需要 SQL Server 2012)
标签: sql sql-server