SQL服务器:如何将列值分别加到下一列
SQL Server : How to sum respectively column value to next column
我关注table...
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
我也想要代码组智能数据
您可能想尝试这样的事情(这还没有经过语法检查,应该被视为伪代码指南而不是明确的答案):
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
可能有用的文章:
这可以通过使用 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中的这篇文章。
我关注table...
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
我也想要代码组智能数据
您可能想尝试这样的事情(这还没有经过语法检查,应该被视为伪代码指南而不是明确的答案):
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
可能有用的文章:
这可以通过使用 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中的这篇文章。