我希望ROW_Number()正常工作,除非列'box'为Null。如果'box'为空,则行号不会增加。
我的数据看起来像这样......
Row Box
1 5
2 3
3 1
4 Null
5 Null
6 2
7 8
8 Null
9 Null
我希望我的查询能够提取看起来像这样的数据......
Row Box
1 5
2 3
3 1
3 Null
3 Null
4 2
5 8
5 Null
5 Null
我正在努力避免使用光标,但我无法弄清楚如何在没有光标的情况下使用它。
答案 0 :(得分:3)
您可以使用相关子查询执行此操作。这是一种方式:
select (select count(box) from t t2 where t2.row <= t.row) as row,
box
from t
order by row;
这是计算到达给定行的有效box
值的数量。
在SQL Server 2012中,您可以使用累计count()
:
select count(box) over (order by row) as row, box
from t
order by row;
这些假设row
在问题中设置。如果row
没有以这些值开头,那么您就遇到了问题。 SQL表本质上是无序的,您需要一些列来指定排序。