我有一张看起来像这样的表:
+---------+--------+-------+
|categ |decrea |lost |
|---------|--------|-------+
|A |1500 |20 |
|B |1500 |40 |
|C |1500 |60 |
+---------+--------+-------+
我想改变减量值,使每个值等于减少累计损失。结果如下:
+---------+---------------+-------+
|categ |decrea |lost |
|---------|---------------|-------+
|A |1500-20 |20 |
|B |1500-(20+40) |40 |
|C |1500-(20+40+60)|60 |
+---------+--------+------+-------+
Anay帮忙吗?
答案 0 :(得分:0)
尝试使用自联接方法:
SELECT
t1.categ,
t1.decrea - SUM(t2.lost) AS decrea,
t1.lost
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.categ >= t2.categ
GROUP BY
t1.categ, t1.decrea, t1.lost
ORDER BY
t1.categ;
Results:
categ decrea lost
1 A 1480 20
2 B 1440 40
3 C 1380 60
答案 1 :(得分:0)
尝试使用SQL Server。
DECLARE @Table TABLE(categ varchar(1),decra INT, lost int)
INSERT INTO @Table VALUES('A',1500,20)
INSERT INTO @Table VALUES('B',1500,40)
INSERT INTO @Table VALUES('C',1500,60)
SELECT *
,decra-SUM(lost) OVER(ORDER BY categ) Accumulated
FROM @Table
<强>输出强>:
categ decra lost Accumulated
A 1500 20 1480
B 1500 40 1440
C 1500 60 1380
答案 2 :(得分:0)
使用以下相关查询
DECLARE @Table TABLE(categ varchar(1),decra INT, lost int)
INSERT INTO @Table VALUES('A',1500,20)
INSERT INTO @Table VALUES('B',1500,40)
INSERT INTO @Table VALUES('C',1500,60)
SELECT *,
decra -
(SELECT SUM(t2.lost) FROM @Table t2 WHERE t2.categ <= t1.categ) AS decra,
lost
FROM @Table t1;