Сначала указатель. Говорить нам «это не работает» совершенно бесполезно, поскольку мы уже знаем это; если бы это работало, вы бы не просили о помощи. Далее «не возвращаемое значение» не намного лучше. Вы должны сказать, что вы ожидаете и что вы получаете. Если вы получили сообщение об ошибке, опубликуйте его, в противном случае укажите, что вы не получаете сообщение. Вы можете рассмотреть Как спросить . Теперь что касается этой конкретной проблемы. Предложение RETURNING не работает на уровне транзакций, оно работает на уровне строк. Строка возвращается для каждой обработанной строки. Кроме того, в этом пункте требуется, что будет правильным выбором, например * или имя столбца. Попробуйте:
insert into table_for_tests (item_id, valid, key, value)
values
('142', tstzrange('1970-01-01t03:00', '1970-01-01T03:00:00.000100', '[)'), 'key1', 'modified value1'),
('142', tstzrange('1970-01-01t03:00', '1970-01-01T03:00:00.000100', '[)'), 'key2', 'modified value2')
returning lower(valid) as transaction_start;
Или, возможно:
with do_ins as
( insert into table_for_tests (item_id, valid, key, value)
values
('142', tstzrange('1970-01-01T03:00', '1970-01-01T03:00:00.000100', '[)'), 'key1', 'modified value1'),
('142', tstzrange('1970-01-01T03:00', '1970-01-01T03:00:00.000100', '[)'), 'key2', 'modified value2')
returning lower(valid) as transaction_start
)
select distinct transaction_start, count(*) over (partition by transaction_start)
from do_ins;