最終的な行の番号を取得し、日付がない場合でも前の行の数をカウントする必要があるSQLテーブルがあります。T-SQLを使用した前回のレコード数のカウント
例えば
02/01/2011
03/01/2011
09/01/2011
NULL
10/10/2011
NULL
このテーブルには、このテーブルの第五のレコード
NULL
NULL
NULL
09/01/2011
NULL
10/10/2011
NULL
ために数5を返す必要がありますが6
事前にありがとうござい
J
を返す必要があります-----更新------ ほんの少しの情報
テーブルは、その作業の完了単位(マイルストーン)と、作業単位を表す親テーブルへのリンクを表します。マイルストーンテーブルには、日付、親作業ID、マイルストーンIDが含まれています。最初の例から
は
ParentID MilestoneID Date
1234 123 02/01/2011
1234 124 03/01/2011
1234 125 09/01/2011
1234 126 NULL
1234 127 10/10/2011
1234 128 NULL
希望これは-----私が得た最も近いが、この
SELECT TOP 1
Num
FROM
(
SELECT
ROW_NUMBER()OVER(ORDER BY ParentID) AS Num,
Date
FROM
Milestone
WHERE
Milestone.ParentID = 1234
) AS MilestoneStones
2 -----
更新
だったのに役立ちます
WHERE 日付はNULLではありません ORDER BY のNum DESC
しかし、大規模なデータセットや他のものがそれに装着することが は私がより良い何かを得ることができることを期待していた非常に遅くなったと
はあなたに
J
最後の行が本当にこのクエリに含まれる必要がありますか?クエリー結果を処理しているコード内のカウントを得ることはできません。 – DoctorMick
そのフィールドがNULLになる行の順序を決定するものは何ですか? ID列はありますか? –
ROW_NUMBER()OVER(ORDER BY ParentID)AS NumはおそらくROW_NUMBER(OVER(ORDER BY ParentID、MilestoneID))でなければなりません。AS Numまたは単にROW_NUMBER()オーバー(ORDER BY MilestoneID)AS Num –