Как сравнить значения в двух строках, имеющих одинаковый идентификатор строки с одинаковыми годом и месяцем? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу обнаружить строки, имеющие одинаковый component_id, где значения отличаются, но месяц и год в дате совпадают.

Моя производная таблица после объединения нескольких таблиц -

component_id  value  date         id
1             100    2019-12-31   1
2             400    2019-12-31   2
1             111    2019-12-20   3
2             400    2018-12-20   4
1             221    2019-12-30   5

Требуемый формат данных -

id1    id2    value1    value2    date1        date2        component_id  

1      3      100       111      2019-12-31   2019-12-20      1

1      5      100       221      2019-12-31   2019-12-30      1

3      5      111       221      2019-12-20   2019-12-30      1 

Я не могу определить код SQL. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 24 апреля 2020

Это звучит как самостоятельное соединение:

select t1.*, t2.*
from t t1 join
     t t2
     on t1.component_id = t2.component_id and
        t1.value <> t2.value and
        date_trunc('month', t1.date) = date_trunc('month', 2.date) and
        t1.id < t2.id;

Вы можете использовать CTE, чтобы вам не приходилось повторять logi c для производной таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...