每行的sql增量值

时间:2012-03-09 08:30:14

标签: sql sql-server tsql

到底如何,我在不使用ROW_NUMBER的情况下计算一行(因为我使用了15个连接而row_number返回了愚蠢的值)。

执行15次连接后...查询将选择4行或5行,我需要为它们添加一个计数器,如1,2,3,4,5。

我尝试过ROW_NUMBER,但这不适合吗?是否有一个功能指望输出的每一行?

我还尝试declare @inc int set @inc = 0并在select语句中:select @inc:=@inc+1 as incselect @inc = @inc + 1 as inc并且无效(Incorrect syntax near ':'.

2 个答案:

答案 0 :(得分:2)

来自评论:

ROW_NUMBER()应该有效,无论你的桌子有多大都没有。

  

我不知道如何订购,因为我想通过start_date订购..   和start_date在一个CASE WHEN END中生成为start_date

您还可以在CASE函数中使用ROW_NUMBER

SELECT  ROW_NUMBER() 
    OVER
    ( ORDER BY 
        ( CASE WHEN ... END ) DESC, 
        ( CASE WHEN ... END ) ASC 
    ) AS RowNumber
....

修改:我在查询中看不到Order By,因此订单无法预测(取决于优化程序)。因此,我建议将订单应用于外部查询,与ROW_NUMBER中的相同。

答案 1 :(得分:1)

ROW_NUMBER()正是你想要的,只是听起来你错了 - 在OVER()你应该只有ORDER BY

另外15个连接表明你的架构有点混乱。