【发布时间】:2015-10-12 13:59:44
【问题描述】:
我想为一个复杂的查询生成一个序列。为此,我使用了变量@rowNo。
我的逻辑是:-
如果一个字段 - isremoved = 0 则将行号增加 1。
如果isremoved = 1 则只将行号增加一次,直到找到下一个 0。
到目前为止我已经完成了,但它给了我语法错误。
DECLARE @rowNo INT;
SET @rowNo = -1;
SELECT
case when sampleTable.isremoved = 0 then @rowNo + 1
else @rowNo end
as rowNumber,
X,
Y,
Z
.
.
FROM tbl_sample sampleTable
INNER JOIN tbl_sample_2 sample2 ON sampleTable.id = sample2.id
.
.
.
这是我想要的输出:-
那么在sql server 2012 中实现这种功能的正确方法是什么?
编辑:- 我确实有一种使用子查询来检索行号的解决方案。但这会影响性能,因为它是具有大量数据的非常复杂的查询(超过 20 个连接)。 所以请给我一个替代方案。
【问题讨论】:
-
是的,没错。
-
我为您的困惑道歉。我已经更新了问题。图片完美地代表了我的结果,以防您仍然感到困惑。
标签: sql variables sql-server-2012 setvalue