首页 > 解决方案 > 对列的前一个值求和的新列

问题描述

我在 SQL Server 中要求从我的表中获取一个新列,其中新列是通过对可用列中的常数值(即 500)求和来获得的。

我在这里附上了示例数据,我需要获取列RequiredNewColumn。

这里的列RequiredNewColumn = 列列Revenue 之后的第一行将500 加到列RequiredNewColumn 的前一个值上。

DDL 这里

SELECT '1/1/2019' AS Ddate,
       '5000' AS Revenue
INTO #tempA UNION
SELECT '1/2/2019',
       '4000'
UNION
SELECT '1/3/2019',
       '3000'
UNION
SELECT '1/4/2019',
       '2000'
UNION
SELECT '1/5/2019',
       '6000'
UNION
SELECT '1/6/2019',
       '4000'
UNION
SELECT '1/7/2019',
       '2000'
UNION
SELECT '1/8/2019',
       '3000'
UNION
SELECT '1/9/2019',
       '6000'
UNION
SELECT '1/10/2019',
       '5000'



SELECT *
FROM #tempA

在此处输入图像描述

标签: sqlsql-server

解决方案


SQL小提琴

MS SQL Server 2017 架构设置

CREATE TABLE MyTable (DateCol Date, Revenue int)
INSERT INTO MyTable (DateCol,Revenue) VALUES ('1/1/2019',5000),
                     ('1/2/2019',4000),('1/3/2019',3000),
                     ('1/4/2019',2000),('1/5/2019',6000)

查询 1

SELECT 
    DateCol, Revenue,
    ((ROW_NUMBER() over (order by DateCol)-1)*500)+5000 AS RequiredNewColumn 
FROM MyTable

结果

|    DateCol | Revenue | RequiredNewColumn |
|------------|---------|-------------------|
| 2019-01-01 |    5000 |              5000 |
| 2019-01-02 |    4000 |              5500 |
| 2019-01-03 |    3000 |              6000 |
| 2019-01-04 |    2000 |              6500 |
| 2019-01-05 |    6000 |              7000 |

推荐阅读