如果为null,则连接数据

时间:2013-06-03 20:33:02

标签: sql tsql

我希望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

我正在努力避免使用光标,但我无法弄清楚如何在没有光标的情况下使用它。

1 个答案:

答案 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表本质上是无序的,您需要一些列来指定排序。