У меня есть таблица в Oracle (12c), которая мне нужна для извлечения данных.
Таблица называется ACCOUNT_ANALYSIS_FY16. Эта таблица содержит трехуровневую иерархию предприятий. Позиция в этой иерархии обозначается столбцом DUNS_LEVEL, значением которого является DUNS (что означает самый низкий уровень бизнеса), IMMEDIATE (что означает уровень 2, aka Parent of DUNS level) или ULTIMATE (значение уровня 3 или родительский элемент СРОЧНАЯ).Как перемещаться по таблице в Oracle SQL
Applicable columns are:
NN_NAME - Account Name
DUNS_LEVEL
DUNS
ULTIMATE_PARENT_DUNS
IMMEDIATE_PARENT_DUNS
Требование ... для данного имени учетной записи (и может быть несколько вхождений одного и того же имени учетной записи из-за разных местах), мне нужно, чтобы увидеть все об этой учетной записи (ака SELECT *), AS ХОРОШО все, что касается Непосредственного родителя и Конечного родителя данной учетной записи.
Я написал это в SQL, но он включает в себя 5 операторов SELECT. Я знаю, что должен быть более элегантный и простой способ сделать это. Обратите внимание, что конечный результат заключается в том, чтобы поместить это в анонимный блок PL/SQL, поэтому допустимо написать блок PL/SQL, если это лучшее решение.
Вот прямой SQL, что у меня есть, который работает ...
Select *from ACCOUNT_ANALYSIS_FY16 where NN_NAME = 'XYZ GROUP'
union
Select * from ACCOUNT_ANALYSIS_FY16 where DUNS in (Select IMMEDIATE_PARENT_DUNS from ACCOUNT_ANALYSIS_FY16 where NN_NAME = 'XYZ GROUP')
union
Select * from ACCOUNT_ANALYSIS_FY16 where DUNS in (Select ULTIMATE_PARENT_DUNS from ACCOUNT_ANALYSIS_FY16 where NN_NAME = 'XYZ GROUP')
Благодарности
могли бы вы сделать это в виде иерархического запроса не реально уверен, что структура ваших данных, поэтому вам, возможно, придется поиграть с ним, но что-то вроде выбора. *, level, sys_connect_by_path (nm_name, '/') «Путь» from account_analysis_fy16 a Начало с ultimate_parent_duns равно null и nm_name = 'XYZ Group' connect by previous_parent_duns = ultimate_parent_duns или предыдущие duns = direct_parent_duns; –
Честно говоря, мне нравится исходный SQL. Понятно, что он делает, и его легко читать. Если нет проблемы с производительностью, я не вижу причин ее менять. –