Мне нужно сгруппировать два разных столбца и объединить.Кроме того, ЕСЛИ размер с другим group_id соответствует другому размеру , тогда я хочу включить ALL из этих строк для этого group_id .
Например, поскольку 55 находится в group_id 10 и group_id 20 Я хочу включить все результаты в group_id 20 (IE 55,88,55,88).
p_id | group_id | size | the_date
------+----------+-----------+--------
1 | 10 | 55 | 2012-10-24
1 | 10 | 54 | 2014-08-09
1 | 20 | 55 | 2013-05-20
1 | 20 | 88 | 2014-05-20
1 | 20 | 55 | 2015-05-20
1 | 30 | 33 | 2014-05-20
1 | 30 | 55 | 2015-05-20
1 | 30 | 33 | 2015-05-20
1 | 40 | 99 | 2015-05-20
Я посмотрел на другие вопросы в стеке И попытался использовать row_number
и first_value
, но ничего не помогло.Ниже мой желаемый результат.
p_id | group_id | size | group_id_arr | size_arr | date_arr
------+----------+------+----------------------------+-----------------------------+-----------
1 | 10 | 55 | {10,20,30,20,10,30,30,20} | {55,55,33,88,55,55,33,55} | {2012-10-24,2013-05-20,2014-05-20,2014-05-20,2014-08-09,2015-05-20,2015-05-20,2015-05-20}
1 | 40 | 99 | {40} | {99} | {2015-05-20}
Вот мой DBFiddle , где я пытаюсь добиться следующего, чтобы я мог нарастить.
rn | p_id | group_id | size | the_date
------+----------+----------+------+-----------
1 | 1 | 10 | 55 | 2012-10-24
2 | 1 | 20 | 55 | 2013-05-20
3 | 1 | 30 | 33 | 2014-05-20
4 | 1 | 20 | 88 | 2014-05-20
5 | 1 | 10 | 54 | 2014-08-09
6 | 1 | 30 | 55 | 2015-05-20
7 | 1 | 30 | 33 | 2015-05-20
8 | 1 | 20 | 55 | 2015-05-20
1 | 1 | 40 | 99 | 2015-05-20
Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.Я открыт для всех подходов, спасибо.