Автор: Artix (user.su)
Задача:
Есть некоторая таблица с датированными данными.
Нужно вывести таблицу в порядке возрастания даты и
для первой и последней строки показать стартовые и финальные значения определенного столбца.
Решение:
/* Проверено на Firebird */
CREATE TABLE TEST (
TEST_DATE INTEGER,
TEST_VALUE VARCHAR(20)
);
INSERT INTO TEST VALUES (5, 'str5');
INSERT INTO TEST VALUES (25, 'str25');
INSERT INTO TEST VALUES (15, 'str15');
INSERT INTO TEST VALUES (10, 'str10');
INSERT INTO TEST VALUES (20, 'str20');
WITH T AS (
SELECT
MAX(R) OVER (PARTITION BY TEST_DATE) AS M,
X.*
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY TEST_DATE) as R,
TEST.*
FROM TEST
ORDER BY TEST_DATE
) X
)
SELECT
TEST_DATE,
TEST_VALUE,
IIF(R=1,TEST_VALUE,0) as START_VALUE,
IIF(R=M,TEST_VALUE,0) as STOP_VALUE
FROM T
SQL Справочник v0.05 © 2007-2025 Igor Salnikov aka SunDoctor