MySQL оставил соединение на той же таблице, дважды инвертированный результат - PullRequest
1 голос
/ 24 апреля 2019

У меня есть эта таблица:

пункт | метка времени | значение
х | 1 | 30
х | 2 | 40
х | 3 | 50
у | 1 | 25
у | 3 | 15

Я хочу получить его результат:

отметка времени | xval | yval
1 | 30 | 25
3 | 50 | 15
2 | 40 | NULL

Но с помощью этого запроса я получил двойной нежелательный результат:

select x.timestamp, x.value as xval, y.value as yval from test x left join test y on x.timestamp=y.timestamp and x.item!=y.item

Результат:

отметка времени | xval | yval
1 | 25 | 30
3 | 15 | 50
1 | 30 | 25
3 | 50 | 15
2 | 40 | NULL

Я хочу получить результат без первых двух строк.

1 Ответ

3 голосов
/ 24 апреля 2019

Здесь должен работать базовый сводный запрос:

SELECT
    timestamp,
    MAX(CASE WHEN item = 'x' THEN value ELSE NULL END) AS xval,
    MAX(CASE WHEN item = 'y' THEN value ELSE NULL END) AS yval
FROM test
GROUP BY
    timestamp
ORDER BY
    timestamp;

enter image description here

Демо

...