我有下表...
code date amount balamt
-------------------------------------
1 2015—03—01 10
1 2015—03—02 15
1 2015—03—03 20
1 2015—03—04 12
2 2015—03—05 15
2 2015—03—01 10
2 2015—03—02 20
2 2015—03—03 10
我想得到这样的结果......
code date amount balamt
-------------------------------------
1 2015—03—01 10 10
1 2015—03—02 15 25
1 2015—03—03 20 45
1 2015—03—04 12 57
2 2015—03—05 15 15
2 2015—03—01 10 25
2 2015—03—02 20 45
2 2015—03—03 10 55
我还想要代码组明智的数据
答案 0 :(得分:1)
你可能想尝试这样的事情(这没有经过语法检查,应该被视为更多的伪代码指南,而不是明确的答案):
SELECT
t1.DateColumnName
, t1.AmountColumnName
, SUM(t2.AmountColumnName)
FROM
TableName t1
LEFT JOIN TableName t2 ON t2.DateColumnName <= t1.DateColumnName
GROUP BY
t1.DateColumnName
, t1.AmountColumnName
潜在有用的文章:
答案 1 :(得分:0)
可以使用CROSS JOIN
和SUM
来完成此操作。试试这样的事情,
declare @table table(date date, amt decimal(18,2))
insert into @table
values
('2015-03-01', 10),
('2015-03-02', 15),
('2015-03-03', 20),
('2015-03-04', 12),
('2015-03-05', 10)
SELECT t.date, t.amt, SUM(t1.amt) as balamt
FROM @table t
CROSS JOIN
@table t1
WHERE t1.date <= t.date
GROUP BY t.date, t.amt
ORDER BY balamt
有关计算上一行值之和的更多信息,请参阅Code Project中的这篇文章。