У меня есть следующий запрос
SELECT tb2.event_id,
tb2.MENU_HINT,
tb2.EVENT_NAME,
tb2.Expr1003,
tb2.CountWinnerNotPrice55to89Runners0to1 AS columnCount,
tb2.SumWinnerNotPrice55to89Runners0to1 AS columSum,
lead(tb2.SumWinnerNotPrice55to89Runners0to1,1) OVER( order by tb2.expr1003) as lead1
FROM [dbo].[tblData2] tb2
WHERE tb2.Expr1003 = '01/01/2018 ';
и возвращает эту таблицу:
╔═══════════╦══════════════════════════╦═════════════════╦════════════╦═════════════╦══════════╦═══════╗
║ event_id ║ MENU_HINT ║ EVENT_NAME ║ Expr1003 ║ columnCount ║ columSum ║ lead1 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466815 ║ AUS / Long (AUS) 1st Jan ║ R4 1400m Hcap ║ 01/01/2018 ║ 1 ║ 85.00 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466809 ║ AUS / Long (AUS) 1st Jan ║ R1 1400m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466868 ║ AUS / MBdg (AUS) 1st Jan ║ R7 1206m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466189 ║ AUS / Inve (AUS) 1st Jan ║ R7 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466864 ║ AUS / MBdg (AUS) 1st Jan ║ R5 1406m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386493 ║ AUS / Rand (AUS) 1st Jan ║ R2 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466862 ║ AUS / MBdg (AUS) 1st Jan ║ R4 904m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ 82.53 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386464 ║ AUS / Flem (AUS) 1st Jan ║ R5 1700m Hcap ║ 01/01/2018 ║ 1 ║ 82.53 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466813 ║ AUS / Long (AUS) 1st Jan ║ R3 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386488 ║ AUS / Asct (AUS) 1st Jan ║ R9 1200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ 57.45 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466522 ║ AUS / Morn (AUS) 1st Jan ║ R4 1200m Hcap ║ 01/01/2018 ║ 1 ║ 57.45 ║ 65.00 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386468 ║ AUS / Flem (AUS) 1st Jan ║ R7 2800m Listed ║ 01/01/2018 ║ 1 ║ 65.00 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466181 ║ AUS / Inve (AUS) 1st Jan ║ R3 1010m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466187 ║ AUS / Inve (AUS) 1st Jan ║ R6 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386486 ║ AUS / Asct (AUS) 1st Jan ║ R8 2400m Grp2 ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386480 ║ AUS / Asct (AUS) 1st Jan ║ R5 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ 65.00 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386478 ║ AUS / Asct (AUS) 1st Jan ║ R4 1800m Grp3 ║ 01/01/2018 ║ 1 ║ 65.00 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386497 ║ AUS / Rand (AUS) 1st Jan ║ R4 1200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386476 ║ AUS / Asct (AUS) 1st Jan ║ R3 2200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466177 ║ AUS / Inve (AUS) 1st Jan ║ R1 1010m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466856 ║ AUS / MBdg (AUS) 1st Jan ║ R1 904m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466518 ║ AUS / Morn (AUS) 1st Jan ║ R2 1200m 3yo ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386470 ║ AUS / Flem (AUS) 1st Jan ║ R8 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386466 ║ AUS / Flem (AUS) 1st Jan ║ R6 1200m Grp3 ║ 01/01/2018 ║ 0 ║ NULL ║ 66.51 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466191 ║ AUS / Inve (AUS) 1st Jan ║ R8 1400m Cup ║ 01/01/2018 ║ 1 ║ 66.51 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466798 ║ AUS / Tera (AUS) 1st Jan ║ R5 1125m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ 70.00 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138466821 ║ AUS / Long (AUS) 1st Jan ║ R7 1800m Hcap ║ 01/01/2018 ║ 1 ║ 70.00 ║ 72.44 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════╣
║ 138386462 ║ AUS / Flem (AUS) 1st Jan ║ R4 2000m Hcap ║ 01/01/2018 ║ 1 ║ 72.44 ║ 72.42 ║
╚═══════════╩══════════════════════════╩═════════════════╩════════════╩═════════════╩══════════╩═══════╝
Теперь я пытаюсь вычислить опережение первого ненулевого значения. значение на поле. например, для event_id = 138466815 значение columnCount равно 85. Я хочу, чтобы в поле «lead1» отображалось значение 82,53, что является следующим ненулевым значением ниже. и что потом, для event_id = ** 138386464 ** "вывод 1 покажет 57,45 (следующее ненулевое значение ниже).
Я не уверен, должен ли я передавать параметр в параметр смещения ведущая функция, но я не знаю, какой из них должен быть, может быть, что-то с Coalesce? Я не смог этого сделать. столбец lead1 для отображения:
╔═══════════╦══════════════════════════╦═════════════════╦════════════╦═════════════╦══════════╦═══════════════╗
║ event_id ║ MENU_HINT ║ EVENT_NAME ║ Expr1003 ║ columnCount ║ columSum ║ lead1 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466815 ║ AUS / Long (AUS) 1st Jan ║ R4 1400m Hcap ║ 01/01/2018 ║ 1 ║ 85.00 ║ 82.53 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466809 ║ AUS / Long (AUS) 1st Jan ║ R1 1400m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466868 ║ AUS / MBdg (AUS) 1st Jan ║ R7 1206m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466189 ║ AUS / Inve (AUS) 1st Jan ║ R7 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466864 ║ AUS / MBdg (AUS) 1st Jan ║ R5 1406m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386493 ║ AUS / Rand (AUS) 1st Jan ║ R2 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466862 ║ AUS / MBdg (AUS) 1st Jan ║ R4 904m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386464 ║ AUS / Flem (AUS) 1st Jan ║ R5 1700m Hcap ║ 01/01/2018 ║ 1 ║ 82.53 ║ 57.45 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466813 ║ AUS / Long (AUS) 1st Jan ║ R3 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386488 ║ AUS / Asct (AUS) 1st Jan ║ R9 1200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466522 ║ AUS / Morn (AUS) 1st Jan ║ R4 1200m Hcap ║ 01/01/2018 ║ 1 ║ 57.45 ║ 65.00 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386468 ║ AUS / Flem (AUS) 1st Jan ║ R7 2800m Listed ║ 01/01/2018 ║ 1 ║ 65.00 ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466181 ║ AUS / Inve (AUS) 1st Jan ║ R3 1010m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466187 ║ AUS / Inve (AUS) 1st Jan ║ R6 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386486 ║ AUS / Asct (AUS) 1st Jan ║ R8 2400m Grp2 ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386480 ║ AUS / Asct (AUS) 1st Jan ║ R5 1600m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386478 ║ AUS / Asct (AUS) 1st Jan ║ R4 1800m Grp3 ║ 01/01/2018 ║ 1 ║ 65.00 ║ 66.51 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386497 ║ AUS / Rand (AUS) 1st Jan ║ R4 1200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386476 ║ AUS / Asct (AUS) 1st Jan ║ R3 2200m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466177 ║ AUS / Inve (AUS) 1st Jan ║ R1 1010m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466856 ║ AUS / MBdg (AUS) 1st Jan ║ R1 904m Mdn ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466518 ║ AUS / Morn (AUS) 1st Jan ║ R2 1200m 3yo ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386470 ║ AUS / Flem (AUS) 1st Jan ║ R8 1400m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386466 ║ AUS / Flem (AUS) 1st Jan ║ R6 1200m Grp3 ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466191 ║ AUS / Inve (AUS) 1st Jan ║ R8 1400m Cup ║ 01/01/2018 ║ 1 ║ 66.51 ║ 70.00 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466798 ║ AUS / Tera (AUS) 1st Jan ║ R5 1125m Hcap ║ 01/01/2018 ║ 0 ║ NULL ║ NULL ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138466821 ║ AUS / Long (AUS) 1st Jan ║ R7 1800m Hcap ║ 01/01/2018 ║ 1 ║ 70.00 ║ 72.44 ║
╠═══════════╬══════════════════════════╬═════════════════╬════════════╬═════════════╬══════════╬═══════════════╣
║ 138386462 ║ AUS / Flem (AUS) 1st Jan ║ R4 2000m Hcap ║ 01/01/2018 ║ 1 ║ 72.44 ║ next not null ║
╚═══════════╩══════════════════════════╩═════════════════╩════════════╩═════════════╩══════════╩═══════════════╝
Кроме того, я не уверен, существует ли способ подсчета количества строк между первым ненулевым значением в columnCount и вторым ненулевым значением. Например, для первого счетчика 7, для второго - 3, а для третьего - 1.