Sql server 2008 SQL Server:如何将各个列的值求和到下一列
我有下表Sql server 2008 SQL Server:如何将各个列的值求和到下一列,sql-server-2008,Sql Server 2008,我有下表 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
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
我还需要代码组方面的数据您可能希望尝试类似的方法(这还没有经过语法检查,应该更多地作为伪代码指南,而不是明确的答案):
选择
t1.DateColumnName
,t1.AmountColumnName
,总和(t2.AmountColumnName)
从…起
表名t1
在t2.DateColumnName上左连接TableName t2这可以通过使用交叉连接
和求和
来完成。试试这样的
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
declare@table表格(日期,金额小数(18,2))
插入@table
价值观
('2015-03-01', 10),
('2015-03-02', 15),
('2015-03-03', 20),
('2015-03-04', 12),
('2015-03-05', 10)
选择t.date、t.amt、SUM(t1.amt)作为余额
来自@table t
交叉连接
@表t1
t1.date你已经试过什么了我还建议查看聚合函数,如SUM
,并在日期列小于其自身的情况下连接到其自身。我想要结果组方面的slcode
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