In Oracle SQL Developer, I am using a WITH clause, in this (simplified) way:
WITH
foos AS
SELECT *
FROM my_table
WHERE field = 'foo'
bars AS
SELECT *
FROM my_table
WHERE field = 'bar'
SELECT *
FROM foo
INNER JOIN bar
ON foo.id = bar.id
I would like to be able to factor out the 'foo' and 'bar' strings, so that I can have something like:
WITH
subq(my_arg) AS
SELECT *
FROM my_table
WHERE field = my_arg
SELECT *
FROM subq('foo')
INNER JOIN subq('bar')
ON subq('foo').id = subq('foo').id
Because, foos
and bars
are actually much bigger than this, and there are nut just two of them, so it is getting a bit hard to maintain.
I know this may be not possible with a WITH clause, but what would be the best solution to avoid writing this subquery multiple times? This may be actually quite simple, but I am quite new to SQL...
Thanks for your help.