Добавить фиктивные данные в mySql Result

0

У меня есть таблица под названием "graph" с идентификаторами полей, датой, значением.

Этот запрос (dateStart и dateFinish определены мной):

SELECT id, date, value FROM graph WHERE date BETWEEN dateStart AND dateFinish

Возвращает этот результат:

id     | date                   | value
id0    | 2017-10-01 00:01:23    | 13
id1    | 2017-11-01 00:06:03    | 10
...    | ...                    | ...
id0    | 2017-15-01 00:05:33    | 34
id1    | 2017-14-01 00:21:23    | 19

Мне нужно дублировать первую и последнюю строки каждого ID с датой как dateStart и dateFinish, поэтому результаты выглядят так:

id     | date                   | value
id0    | dateFirst              | 13
id1    | dateFirst              | 10
id0    | 2017-10-01 00:01:23    | 13
id1    | 2017-11-01 00:06:03    | 10
...    | ...                    | ...
id0    | 2017-15-01 00:05:33    | 34
id1    | 2017-14-01 00:21:23    | 19
id0    | dateFinish             | 34
id1    | dateFinish             | 19

Короче говоря, мне нужно дублировать первую и последнюю строку каждого идентификатора.

Причина этого требования заключается в том, что мы используем внешнюю библиотеку, где единственным требуемым параметром является запрос, поэтому я не могу коснуться результатов после запроса, поэтому я ищу чистое решение mySQL, если возможно,

Теги:

1 ответ

0

Вы можете использовать union all:

SELECT id, date, value
FROM graph
WHERE date BETWEEN v_dateStart AND v_dateFinish
UNION ALL
SELECT id, v_dateStart, value
FROM graph g
WHERE g.date = (SELECT MIN(g2.date) FROM graph g2 WHERE g2.id = g.id)
UNION ALL
SELECT id, v_dateEnd, value
FROM graph g
WHERE g.date = (SELECT MAX(g2.date) FROM graph g2 WHERE g2.id = g.id);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню