Получить несколько значений для одной строки на postgresql - PullRequest
0 голосов
/ 19 марта 2020

У меня есть таблица с несколькими датами и одним идентификатором и множеством строк. У каждого идентификатора есть несколько дат и строк, но только один идентификатор.

Я хочу получить все значения дат для одного идентификатора (например, ID = INI111) и получить каждую дату как одно значение. Я имею в виду, я не хочу все даты в одной строке, я хочу одну строку для каждой даты. Я тоже хочу это со строками, но важны даты.

Когда я говорю «строка», я имею в виду результаты запроса.

Например:

Данные:

ID ----------- Дата1 ---------- Строка1 ---------- Дата2 --- -------- String2 ----- Date3 ------- Строка 3 INI100 ------- 2020/02/02 ---- aaaaa -------- 2020/02/03 ------- bbbbb ---- 2020/02/04 - cccccc

Вывод:

  1. 2020/02 / 02
  2. ааааа
  3. 2020/02/03
  4. bbbbb
  5. 2020/02/04
  6. ccccc

Может кто-нибудь мне поможет? Большое спасибо!

1 Ответ

0 голосов
/ 19 марта 2020

Кажется, вы хотите отменить вывод вашего набора данных. В Postgres вы можете сделать это с боковым соединением:

select v.*
from mytable t
cross join lateral(
    values(id, date1::text), (id, string1), (id, date2::text), (id, string2)
) v(id, val)

Обратите внимание, что для этого необходимо настроить типы данных в сгенерированном столбце (запрос приводит даты к строкам).

Демонстрация на DB Fiddle :

id     | val       
:----- | :---------
INI100 | 2020-02-02
INI100 | aaaaa     
INI100 | 2020-02-03
INI100 | bbbbb     
...