Зиллион ошибок; отмечено в комментариях:
WITH Stats AS
(
SELECT
column1, column2
FROM TABLE1
UNION ALL
SELECT
column1, column2
FROM TABLE2
),
Newest AS
(
SELECT s.* --> missing comma
ROW_NUMBER() OVER
(
PARTITION BY
column1, column2 --> missing comma
REPLACE(REPLACE('%(param)s', '5', '6'), '7', '8')
ORDER BY colum2 DESC
) PRIORITY --> missing comma
CASE WHEN REGEXP_INSTR('%(param)s', '/(//')
> 0 AND REGEXP_LIKE(column1, '%(param)s')
THEN 'Y' END PARAM_MATCH,
CASE WHEN REGEXP_INSTR('%(param)s', '/(//')
= 0 AND column1 LIKE '%(param)s' THEN 'Y'
END LIKE_MATCH, --> superfluous comma
FROM Stats s
WHERE (REGEXP_INSTR('%(param)s', '/(//') > 0
AND REGEXP_LIKE(column1,'%(param)s')) OR
(REGEXP_INSTR('%(param)s', '/(//') = 0 AND
REGEXP_LIKE'%(param)s')) OR --> what is REGEXP_LIKE?
'%(param)s' IS NULL
)
--> missing SELECT statement
Теперь это правильно, если говорить о синтаксисе. Еще раз, как и в предыдущем вопросе: будьте осторожнее при написании запросов, поскольку это становится абсурдным.
WITH Stats
AS (SELECT column1, column2 FROM TABLE1
UNION ALL
SELECT column1, column2 FROM TABLE2),
Newest
AS (SELECT s.*,
ROW_NUMBER ()
OVER (
PARTITION BY column1,
column2,
REPLACE (REPLACE ('%(param)s', '5', '6'),
'7',
'8')
ORDER BY colum2 DESC)
PRIORITY,
CASE
WHEN REGEXP_INSTR ('%(param)s', '/(//') > 0
AND REGEXP_LIKE (column1, '%(param)s')
THEN
'Y'
END
PARAM_MATCH,
CASE
WHEN REGEXP_INSTR ('%(param)s', '/(//') = 0
AND column1 LIKE '%(param)s'
THEN
'Y'
END
LIKE_MATCH
FROM Stats s
WHERE ( REGEXP_INSTR ('%(param)s', '/(//') > 0
AND REGEXP_LIKE (column1, '%(param)s'))
OR ( REGEXP_INSTR ('%(param)s', '/(//') = 0
AND REGEXP_LIKE ('???', '%(param)s'))
OR '%(param)s' IS NULL)
SELECT *
FROM newest;