異なる製品の起動の間に経過した日数を割り当てる必要があります。これは私が持っているデータの一例である:T-SQL製品の起動中に実行中の稼働日数を割り当てると、製品の起動時に0にリセットされます。
SELECT TiD
, Launch
, COUNT(1) OVER(PARTITION BY Launch ORDER BY TiD) DaysSinceLastLaunch
FROM #TestingData
ORDER BY TiD ASC
は、しかし、それはカウントをゼロにリセットしません:
SELECT '2016-01-01' TiD, 1 Launch, NULL DaysBetween
INTO #TestingData
UNION
SELECT '2016-01-02', 0, NULL DaysBetween
UNION
SELECT '2016-01-03', 0, NULL DaysBetween
UNION
SELECT '2016-01-04', 1, NULL DaysBetween
UNION
SELECT '2016-01-05', 0, NULL DaysBetween;
が、私はこのクエリを使用しようとしました。最終結果が次のように必要な場合:
SELECT '2016-01-01' TiD, 1 Launch, 0 DaysBetween
INTO #CorrectData
UNION
SELECT '2016-01-02', 0, 1 DaysBetween
UNION
SELECT '2016-01-03', 0, 2 DaysBetween
UNION
SELECT '2016-01-04', 1, 0 DaysBetween
UNION
SELECT '2016-01-05', 0, 1 DaysBetween;
何をする必要がありますか?カーソルを使うべきですか?
おかげ
あなたが発射されたプロジェクトの関連したIDまたは名前を持っている場合は、その値に分割窓関数がうまく動作します。 – dfundako
Googleの「SQLギャップと諸島の問題」の例がたくさんあります。 –