さて、あなたはそれ以外の場合はLEAD
とLAG
が同期して得ることができる...順序を示して別の列を必要とします。それは言われていると、あなたがNULL
を打つまで、無制限の以前のすべての行を見て必要があるだろう、ここで私が「サブクエリで簡単な方法
declare @table table (ID int identity(1,1), Column1 int)
insert into @table
values
(NULL),
(NULL),
(2017),
(NULL),
(NULL),
(NULL),
(2048),
(NULL),
(NULL),
(NULL),
(NULL),
(2098)
SELECT
ID
,Column1
,ISNULL(Column1, (SELECT TOP 1 Column1 FROM @Table WHERE ID < t.ID AND Column1 IS NOT NULL ORDER BY ID DESC)) as Column2
FROM
@Table t
RETURNS
+----+---------+---------+
| ID | Column1 | Column2 |
+----+---------+---------+
| 1 | NULL | NULL |
| 2 | NULL | NULL |
| 3 | 2017 | 2017 |
| 4 | NULL | 2017 |
| 5 | NULL | 2017 |
| 6 | NULL | 2017 |
| 7 | 2048 | 2048 |
| 8 | NULL | 2048 |
| 9 | NULL | 2048 |
| 10 | NULL | 2048 |
| 11 | NULL | 2048 |
| 12 | 2098 | 2098 |
+----+---------+---------+
あなたは手の込んだことができますか?サンプルデータや期待される結果が十分ではありません。 – scsimon
カラム2が望ましい結果である場合、カラム1に基づいて計算される方法が完全に不明です。なぜ2017グループがNULLになるのですか?どの列が注文を表していますか? –
私はColumn1で新しい値を取得し、プロセスを繰り返すまで、Column2のColumn1の値を下げたいと思います。 – AllisonCoder