Я пытаюсь лучше использовать CTE в Oracle SQL Разработчик запустил приведенный ниже код, который я упростил до его базовой c структуры. Он запустился успешно и сказал, что [x] количество строк было вставлено, но все же, когда я запускаю SELECT * FROM [TableName], ничего не появляется даже после фиксации. Кто-нибудь видит, где я напутал?
Обратите внимание, что я вынул реальные имена и тому подобное и заменил их на <какое-то поле>, которое представляет, что это такое.
--------------------------------------------------------------------------------
DROP TABLE <TableName> ;
--------------------------------------------------------------------------------
ALTER SESSION SET NLS_date_format = 'MM/DD/YYYY' ;
--------------------------------------------------------------------------------
CREATE TABLE <TableName> (
< Table Field Names> <Table Field Data Types>
);
--------------------------------------------------------------------------------
GRANT SELECT ON <TableName> TO <User1>;
GRANT SELECT ON <TableName> TO <User2>;
--------------------------------------------------------------------------------
INSERT INTO <TableName>
SELECT
<Fields From CTE1, CTE2 & CTE3>
FROM (
WITH <CTE1> AS
(
SELECT DISTINCT
<Field Names From Table1>
FROM <Table1>
WHERE <Specific Field> NOT IN ('<input>')
),
--------------------------------------------------------------------------------
<CTE2> AS
(
SELECT DISTINCT
<Fields From Table2>
FROM <Table2>
WHERE <Specific Field> >= '<input>'
AND <Specific Field> IN ('<input>')
GROUP BY
<Fields From Table2>
),
--------------------------------------------------------------------------------
<CTE3> AS
(
SELECT DISTINCT
<Fields From Table3>
FROM <Table3>
WHERE <Specific Field> = '<input>'
AND <Specific Field> >= '<input>'
AND <Specific Field> IN ('<input>')
)
--------------------------------------------------------------------------------
SELECT DISTINCT
*
FROM <CTE1> a
LEFT JOIN <CTE2> b
ON a.ID = b.ID
LEFT JOIN <CTE3> c
ON to_char(a.ID) = c.ID
)
--------------------------------------------------------------------------------
COMMIT;
--------------------------------------------------------------------------------
SELECT count(*) FROM <TableName>;
--------------------------------------------------------------------------------