У меня есть код, который возвращает последние 5 результатов для любого заданного идентификатора (включая указанный идентификатор).Я хочу вернуть дополнительные строки со словом none
и 00
соответственно, если предыдущие значения не равны 5.
Так, если код возвращает 3 результата, генерируются 2 дополнительные строки, есликод возвращает 4 результата, генерирует 1 дополнительную строку.
Текущий код: (aaa.FS01 = '12345'
) является просто примером идентификатора
SELECT aaa.FS01,
CAST(COUNT(distinct bbb.MG) AS FLOAT)/ convert(varchar(10), DATEDIFF(second ,MIN(TP), MAX(TP))/3600.0) TPDIFF,
22 TAG
FROM TableA aaa
INNER JOIN TableB bbb ON bbb.tpl = aaa.FS01 OR bbb.fpl = aaa.FS01
INNER JOIN TableC ccc ON ccc.id = aaa.FS01
INNER JOIN TableD ddd ON aaa.VG = ddd.gkey
WHERE aaa.FS01 IN (
SELECT TOP 5 ccc.id
FROM TableA aaa
INNER JOIN TableC ccc ON ccc.id = aaa.FS01
INNER JOIN TableD v ON aaa.VG = ddd.gkey
WHERE ddd.name = (SELECT ddd.name FROM TableA aaa
INNER JOIN TableD v ON aaa.VG = ddd.gkey WHERE aaa.FS01 = '12345')
ORDER BY ccc.ata DESC)
GROUP BY aaa.FS01, ccc.ata
ORDER BY ccc.ata DESC
Текущий вывод (для FS01
, который возвращает только3 значения):
FS01 TPDIFF TAG
12345 30 22
22222 50 22
45122 90 22
Ожидаемый выход (Для FS01
, который возвращает только 3 значения):
FS01 TPDIFF TAG
12345 30 22
22222 50 22
45122 90 22
none 00 22
none 00 22
Токовый выход (Для FS01
, который возвращает только 1 значение):
FS01 TPDIFF TAG
74133 30 22
Ожидаемый результат (для FS01
, который возвращает только 1 значение):
FS01 TPDIFF TAG
74133 80 22
none 00 22
none 00 22
none 00 22
none 00 22