Добавить дату для каждого идентификатора в PostgreSQL

#postgresql

#postgresql

Вопрос:

У меня есть таблица «Пользователи», которая выглядит следующим образом

   id     name
  1      Johny 
  2      Michael
  3      Jony
 

я хочу добавить новый столбец с именем date,

 date
2021-01-01
2021-02-01
 

но я хочу дату для каждого идентификатора

   id     name      date
  1      Johny     2021-01-01
  1      Johny     2021-02-01
  2      Michael   2021-01-01
  2      Michael   2021-02-01
  3      Jony      2021-01-01
  3      Jony      2021-02-01
 

Как это сделать?

Ответ №1:

По-видимому, вы хотите выполнить перекрестное соединение между существующей таблицей users и либо другой таблицей, либо какой-либо псевдотаблицей.

Вот как это сделать с псевдотаблицей (я обозначил как d )

 select u.id, u.name, d.date
from
  users u
  cross join
  (
     select TO_DATE('2021-01-01', 'YYYY-MM-DD') as date
     union
     select TO_DATE('2021-02-01', 'YYYY-MM-DD')
  ) as d;
 

Пример скрипки Sql здесь

Это приведет ко всем перестановкам (#users x #dates) между двумя таблицами

Комментарии:

1. Не связано, но: часть ОБЪЕДИНЕНИЯ может быть упрощена до (values (date '2021-01-01'), (date '2021-02-01')) as d(date)