到底如何,我在不使用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 inc
和select @inc = @inc + 1 as inc
并且无效(Incorrect syntax near ':'.
)
答案 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个连接表明你的架构有点混乱。