powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как в plpgsql воткнуть WITH?
9 сообщений из 9, страница 1 из 1
как в plpgsql воткнуть WITH?
    #40077196
вот я в цикле делаю:
Код: sql
1.
2.
3.
4.
5.
6.
FOR row IN (
SELECT col
,lag(added, 1) OVER (ORDER BY added) AS prev_added
FROM tbl
ORDER BY added
)



а надо добавить колонку next_added, поэтому хочу этот запрос пихнуть в WITH, а после него делать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
FOR row IN (
SELECT *
,lag(added, 1) OVER (ORDER BY added DESC) AS next_added

FROM cte
ORDER BY added DESC
)



но получаю ошибку... как быть?
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40077198
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

Вы ни вашего кода не привели целиком ни текста ошибки.
Поэтому где у вас проблема - не понятно.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40077219
Код: sql
1.
2.
ОШИБКА:  ошибка синтаксиса (примерное положение: "FOR")
СТРОКА 48: FOR row IN (



код:
Код: sql
1.
2.
3.
WITH cte AS(...)

FOR row IN ...
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40077225
Misha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик,

ce2pg2=> select version();
version
------------------------------------------------------------------------------------------------------------------
PostgreSQL 12.7 (Debian 12.7-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
(1 строка)


ce2pg2=> DO
ce2pg2-> $$declare
ce2pg2$> e_cur record;
ce2pg2$> begin
ce2pg2$> for e_cur in (with cte as (select 1 a) select * from cte ) loop
ce2pg2$> raise notice '%', e_cur.a;
ce2pg2$> end loop;
ce2pg2$> END$$;
NOTICE: 1
DO
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40077229
Misha111, а блин, точно, туплю
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40099482
onlyjoost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите пожалуйста, не получается соединить with as и case when
Ругается что столбец определен неоднозначно
если комментить кусок с case то все проходит успешно

(удалил кучу кода для упрощения.. еще куча джионов и условий)


WITH ot1 AS
(
SELECT SUPPLY_TYPE , CAL_DATE,
CASE WHEN NEW_STAT = '3' THEN '1' ELSE '0' END AS Строки_со_статусом_3
FROM empl
WHERE SUPPLY_TYPE = '1'
)

SELECT *
FROM ot1
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40099489
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
onlyjoost, добавьте имя таблицы к столбцу на который ругается.
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40099508
onlyjoost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Да, оказалось что два столбца имели одинаковый псевдоним, причем без with всё работает ок, но с ним ругается
...
Рейтинг: 0 / 0
как в plpgsql воткнуть WITH?
    #40099516
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onlyjoost
Guzya,

Да, оказалось что два столбца имели одинаковый псевдоним, причем без with всё работает ок, но с ним ругается


Так не бывает чтобы запрос сам по себе работал а внутри with вдруг переставал.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как в plpgsql воткнуть WITH?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]