with句自体の書き方はOracleと同じですが、PostgreSQL独自のVALUEリストと組み合わせて利用するとさらに便利に感じます。
VALUEリストと組み合わせた利用例
with wktbl as ( SELECT * FROM (VALUES (1, '山本', 'yamamoto'), (2, '中嶋', 'nakajima'), (3, '川本', 'kawamoto'), (4, '大嶋', 'oshima'), (5, '小嶋', 'kojima') ) AS t( lno, name, roma ) ) select * from wktbl order by 1;
myposdb=# with wktbl as (
myposdb(# SELECT * FROM (VALUES
myposdb(# (1, '山本', 'yamamoto'),
myposdb(# (2, '中嶋', 'nakajima'),
myposdb(# (3, '川本', 'kawamoto'),
myposdb(# (4, '大嶋', 'oshima'),
myposdb(# (5, '小嶋', 'kojima')
myposdb(# ) AS t(
myposdb(# lno, name, roma
myposdb(# )
myposdb(# )
myposdb-# select * from wktbl order by 1;
lno | name | roma
-----+------+----------
1 | 山本 | yamamoto
2 | 中嶋 | nakajima
3 | 川本 | kawamoto
4 | 大嶋 | oshima
5 | 小嶋 | kojima
(5 行)
myposdb=#