先例行值SQL的值降低总和

  • 本文关键字:SQL sql amazon-redshift
  • 更新时间 :
  • 英文 :


我有一个看起来像这样的表:

+---------+--------+-------+
|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帮助?

使用以下相关查询

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;

尝试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

尝试使用自我加入方法:

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

demo

相关内容

  • 没有找到相关文章

最新更新