#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;
Это приведет ко всем перестановкам (#users x #dates) между двумя таблицами
Комментарии:
1. Не связано, но: часть ОБЪЕДИНЕНИЯ может быть упрощена до
(values (date '2021-01-01'), (date '2021-02-01')) as d(date)