sql - 对列的前一个值求和的新列
问题描述
我在 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
解决方案
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 |
推荐阅读
- lua - 如何在love2D中垂直和水平居中对齐文本?
- c# - 无法将“System.Collections.Generic.List[Interfaces.IUser]”类型的对象转换为“System.Linq.IQueryable[Interfaces.IUser]”类型的对象
- html - 将网站投入生产时如何设置html表单操作
- python - 更改 A 。M 到只是 AM
- c - 使用 CLOCK_REALTIME 的 clock_gettime 有什么问题?
- openstack - CREATE_FAILED : Flavor 的本地磁盘冲突。您需要创建一个可启动的卷来为您的实例使用这种风格
- loops - 一行中的for循环输出
- typescript - 打字稿 - 续集:无法使用模型
- bit-manipulation - 给定无符号操作数,计算 `(x - y) / z` 的有符号结果的按位快捷方式
- javascript - 无法设置未定义的属性(设置“播放器”)ReactPlayer