首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建从-1开始的行索引列

创建从-1开始的行索引列
EN

Stack Overflow用户
提问于 2020-05-15 03:40:35
回答 1查看 14关注 0票数 0

我需要创建一个从-1开始的行索引列,以便查询前一天的余额。我现在的问题是:

代码语言:javascript
复制
select TRANSDATE, sum(convert(float,AMOUNTMST-SETTLEAMOUNTMST)) as Balance

from [AX2cTestStage].[dbo].[CUSTTRANS_V]

group by TRANSDATE

order by TRANSDATE asc

TRANSDATE                Balance
2019-04-12 00:00:00.000 -22591.47
2019-04-15 00:00:00.000 -394.95
2019-04-25 00:00:00.000 -1776
2019-04-26 00:00:00.000 -11973.84
2019-04-29 00:00:00.000 -24230.16
2019-05-02 00:00:00.000 -10695.39

这就是我需要的:

代码语言:javascript
复制
TRANSDATE                Balance   Row Index
2019-04-12 00:00:00.000 -22591.47    -1
2019-04-15 00:00:00.000 -394.95       0
2019-04-25 00:00:00.000 -1776         1 
2019-04-26 00:00:00.000 -11973.84     2
2019-04-29 00:00:00.000 -24230.16     3
2019-05-02 00:00:00.000 -10695.39     4

我曾尝试将一个变量声明为行索引

代码语言:javascript
复制
declare @row_num as int = -1
select TRANSDATE, sum(convert(float,AMOUNTMST-SETTLEAMOUNTMST)) as Balance, @row_num += 1 as Row Index

from [AX2cTestStage].[dbo].[CUSTTRANS_V]

group by TRANSDATE

我收到这个错误:

代码语言:javascript
复制
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.

在为每个字段声明了一个变量之后,我仍然收到错误。有没有更简单的方法来实现这一点?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 03:44:12

您可以使用ROW_NUMBER()。例如:

代码语言:javascript
复制
select
  TRANSDATE, 
  sum(convert(float,AMOUNTMST-SETTLEAMOUNTMST)) as Balance, 
  row_number() over(order by TRANSDATE) - 2 as Row Index
from [AX2cTestStage].[dbo].[CUSTTRANS_V]
group by TRANSDATE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61806055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档