Доброго времени суток! С SQL я не очень лажу, поэтому попрошу помощи возможно в элементарном вопросе.
Есть таблица, в одной колонке которой заполнены данными не все строки. Пустые значения нужно заполнить значениями из строки вышележащей.
Пыталась сделать это как-то так
update data.st
SET name_type=(select name_type from data.st where id<id and name_type not like ' ' order by id asc)
или так
if st.name_type not like '' then
UPDATE data.st
SET st.name_type=(select name_type from data.st where id>id order by id desc)
end if
Первый вариант все сносит вообще,а второй принципе не работает, выдает ошибку.
Использую Postgresql.
Буду благодарна за подсказку!
sql
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 09 апр 2014, 11:33
- Репутация: 2
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: sql
sqlfiddle.com/#!3/30876/1
Upd: Ой, это для SQL Server. Для PostgreSQL будет так:
sqlfiddle.com/#!15/30876/3
Upd: Ой, это для SQL Server. Для PostgreSQL будет так:
sqlfiddle.com/#!15/30876/3
- gimran
- Гуру
- Сообщения: 1902
- Зарегистрирован: 07 июл 2010, 15:43
- Репутация: 242
- Откуда: Уфа
Re: sql
UPDATE data.st
SET st.name_type=(select name_type from data.st where name_type not like '' order by id desc);
Так может быть? Хотя не понял до конца логику запроса.
[ Сообщение с мобильного устройства ]
SET st.name_type=(select name_type from data.st where name_type not like '' order by id desc);
Так может быть? Хотя не понял до конца логику запроса.
[ Сообщение с мобильного устройства ]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость