Я новичок в Oracle; Я хочу, чтобы иметь возможность генерировать отчет, который дает мне совокупные значения для каждого столбца таблицы. Я ничего, что делает это автоматически не нашел, так что я создал таблицу, где я загрузить имена столбцов, то я использую данные в этой таблице для создания отдельных операторов SQL:Получить совокупные значения каждой колонки в таблице
Вот мой стол:
CREATE TABLE CARIAS.TEST_CA_1
(
DATA_BASE_NAME VARCHAR2(100 BYTE),
SCHEMA_NAME VARCHAR2(100 BYTE),
TABLE_NAME VARCHAR2(100 BYTE),
FIELD_NAME VARCHAR2(20 BYTE)
);
INSERT INTO TEST_CA_1 (DATA_BASE_NAME, SCHEMA_NAME, TABLE_NAME, FIELD_NAME) ЗНАЧЕНИЯ ('FDWP', 'ИДП', 'D_CLAIM', 'FIELD_CLAIM_OFFICE'); INSERT INTO TEST_CA_1 (DATA_BASE_NAME, SCHEMA_NAME, TABLE_NAME, FIELD_NAME) ЗНАЧЕНИЯ («FDWP», «FDW», «D_CLAIM», «CLAIM_SYMBOL_CODE»); INSERT INTO TEST_CA_1 (DATA_BASE_NAME, SCHEMA_NAME, TABLE_NAME, FIELD_NAME) ЗНАЧЕНИЯ («FDWP», «FDW», «D_CLAIM», «HANDLING_DIVISION»);
Вот запрос, который строит заявления:
SELECT
FIELD_NAME,
SQL_STATEMENT
FROM
(
--Creates Count Statements
SELECT 'SELECT ' || FIELD_NAME ||', COUNT(*) AS CNT FROM ' || SCHEMA_NAME || '.' || TABLE_NAME ||' GROUP BY ' || FIELD_NAME || ';' AS SQL_STATEMENT, FIELD_NAME FROM TEST_CA_1
UNION ALL
--Creates Минимальное и максимальное значения Заявление
SELECT 'SELECT MIN(' || FIELD_NAME || ') AS MIN_VALUE, MAX(' || FIELD_NAME || ') AS MAX_VALUE FROM ' || SCHEMA_NAME || '.' || TABLE_NAME || ';' AS SQL_STATEMENT
,FIELD_NAME
FROM TEST_CA_1
)
ORDER BY FIELD_NAME;
Затем я использую эти «встроенные» заявления, чтобы получить то, что я хочу. Есть ли более простой способ сделать это?
Перспектива для обеспечения тестового случая, однако, является неполной. Пожалуйста, разместите некоторые вставки в качестве входных данных. Это будет полезно для человека, желающего ответить на ваш вопрос. Удачи! –
Оператор INSERT, подобный этому, недействителен для Oracle. –
Более простым способом было бы перейти к системным таблицам Oracle и запросить имена и типы базы данных, таблиц и столбцов для создания ваших инструкций. К сожалению, я могу сделать это только с помощью SQL Server - я ничего не знаю о системных таблицах в Oracle (иначе я бы опубликовал это как ответ). Я отправляю этот комментарий только для того, чтобы привести кого-то, кто знает, как добраться до системных таблиц Oracle. – Russ