3

列 'box' が Null でない限り、ROW_Number() が正常に動作するようにしたいと思います。'box' が null の場合、行番号は増加しません。

このようなデータがあります...

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

カーソルの使用を避けようとしていますが、カーソルなしでこれを機能させる方法がわかりません。

4

1 に答える 1

3

これは、相関サブクエリを使用して行うことができます。1 つの方法を次に示します。

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 テーブルは本質的に順序付けされておらず、順序付けを指定する列が必要です。

于 2013-06-03T20:37:17.117 に答える