首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle弹性值层次结构oracle ebs r12报表的SQL查询

Oracle弹性值层次结构oracle ebs r12报表的SQL查询
EN

Stack Overflow用户
提问于 2013-11-15 18:33:07
回答 3查看 21.1K关注 0票数 0

我是oracle和oracle ebs的新手,我需要一些帮助。

我正在用oracle ebs r12做一个报告,我需要使用SQL查询以分层的方式列出fnd_flex_values_vl视图中的flex值。它不一定必须是分层查询。任何查询都可以。我只需要一个SQL语句,它将以层次结构的方式返回flex值。

有两个对象,这两个对象存储有关弹性值层次结构的信息。它是FND_FLEX_VALUE_NORM_HIERARCHY (表)和fnd_flex_value_children_v (视图)。我认为其中一个就足够了,因为fnd_flex_value_children_v是使用FND_FLEX_VALUE_NORM_HIERARCHY和其他一些对象创建的。

然而,我面临的问题是,一个flex值可能列出了几个父级,我需要找到所有顶级父级或叶子,以便进行自上而下或自下而上的层次结构。据我所知,fnd_flex_value_children_v不一定要存储顶级父母(只存储孩子)。

而且看起来可能没有一个,但可能有多个层次结构(如果是这样的话,我需要在一个查询中列出它们)。

您的帮助我们将不胜感激。这个问题我已经纠结了很长时间了。非常感谢您的关注。

致以最好的问候,新用户。=)

EN

回答 3

Stack Overflow用户

发布于 2013-11-15 23:18:30

你应该用这个表,APPLSYS.FND_FLEX_VALUE_SETS。您标识的对象是关于FND_FLEX_VALUE_SETS表的元数据对象。

我喜欢从根记录开始。

下面是我查找根记录(无父记录)的方法。

代码语言:javascript
复制
SELECT DISTINCT
FVS.PARENT_FLEX_VALUE_SET_ID
FROM
APPLSYS.FND_FLEX_VALUE_SETS FVS
WHERE
FVS.PARENT_FLEX_VALUE_SET_ID  IS NOT NULL 
ORDER BY 1 ;  

一旦我找到根记录,我就开发我的start by子句:

代码语言:javascript
复制
START WITH
(
FVS.FLEX_VALUE_SET_ID IN
(SELECT DISTINCT FVS.PARENT_FLEX_VALUE_SET_ID
FROM APPLSYS.FND_FLEX_VALUE_SETS FVS
WHERE FVS.PARENT_FLEX_VALUE_SET_ID IS NOT NULL
)

这个子句捕获所有根记录(您可以只选择一个)。

接下来,我将开发connect by子句。因为我希望我的层次结构从根开始,所以我将采用这种方法:

level 1 flex_value_set_id ....prior级别

2级parent_flex_value_set_id

代码语言:javascript
复制
CONNECT BY fvs.parent_flex_value_set_id = prior fvs.flex_value_set_id ;

这将导致以下语句:

代码语言:javascript
复制
SELECT LEVEL,
FVS.*
FROM APPLSYS.FND_FLEX_VALUE_SETS FVS
START WITH
(
FVS.FLEX_VALUE_SET_ID IN
(SELECT DISTINCT FVS.PARENT_FLEX_VALUE_SET_ID
FROM APPLSYS.FND_FLEX_VALUE_SETS FVS
WHERE FVS.parent_flex_value_set_id IS NOT NULL
)
)
CONNECT BY FVS.PARENT_FLEX_VALUE_SET_ID = PRIOR FVS.FLEX_VALUE_SET_ID ; 

然后,可以按如下方式添加flex值:

代码语言:javascript
复制
SELECT  
LEVEL, 
FVS.* 
FROM  
(SELECT 
 FLEX.FLEX_VALUE_SET_ID, 
 FLEX.PARENT_FLEX_VALUE_SET_ID, 
 FLEX.FLEX_VALUE_SET_NAME, 
 FVAL.FLEX_VALUE 
 FROM 
 APPLSYS.FND_FLEX_VALUE_SETS FLEX, 
 APPLSYS.FND_FLEX_VALUES FVAL 
 WHERE 
 FLEX.FLEX_VALUE_SET_ID = FVAL.FLEX_VALUE_SET_ID(+)) FVS 
 START WITH 
 (FVS.FLEX_VALUE_SET_ID IN 
  (SELECT DISTINCT 
   FVS.PARENT_FLEX_VALUE_SET_ID 
   FROM APPLSYS.FND_FLEX_VALUE_SETS FVS 
   WHERE FVS.parent_flex_value_set_id IS NOT NULL ) ) 
   CONNECT BY 
   FVS.PARENT_FLEX_VALUE_SET_ID = PRIOR FVS.FLEX_VALUE_SET_ID;
票数 0
EN

Stack Overflow用户

发布于 2017-10-19 00:26:15

这可能会对你有所帮助

代码语言:javascript
复制
SELECT fvc.PARENT_FLEX_VALUE RUBRO_N0 ,FVT.description
DESC_RUBRO_N0,FVC.FLEX_VALUE RUBRO_N1 , fvc.DESCRIPTION
DESC_RUBRO_N1,FVC2.FLEX_VALUE RUBRO_N2 , FVC2.DESCRIPTION
DESC_RUBRO_N2,FVC3.FLEX_VALUE RUBRO_N3 , FVC3.DESCRIPTION
DESC_RUBRO_N3,FVC4.FLEX_VALUE RUBRO_N4 , FVC4.DESCRIPTION
DESC_RUBRO_N4,NVL(FVC4.FLEX_VALUE,NVL(FVC3.FLEX_VALUE,NVL(FVC2.FLEX_VALUE,FVC.FLEX_VALUE))) RUBROFIN
FROM FND_FLEX_VALUE_CHILDREN_V fvc 
,FND_FLEX_VALUE_CHILDREN_V FVC2 
,FND_FLEX_VALUE_CHILDREN_V FVC3 
,FND_FLEX_VALUE_CHILDREN_V FVC4
,FND_FLEX_VALUES_TL FVT 
WHERE fvc.FLEX_VALUE_SET_ID =  1016176 
AND fvc.PARENT_FLEX_VALUE not in(SELECT FLEX_VALUE FROM FND_FLEX_VALUE_CHILDREN_V WHERE FLEX_VALUE_SET_ID = --YOUR FLEX_VALUE_SET_ID) 
AND fvc.FLEX_VALUE = FVC2.PARENT_FLEX_VALUE (+) 
AND fvc2.FLEX_VALUE = FVC3.PARENT_FLEX_VALUE (+) 
AND fvc3.FLEX_VALUE  = FVC4.PARENT_FLEX_VALUE (+) 
AND fvc.PARENT_FLEX_VALUE = FVT.FLEX_VALUE_MEANING 
AND FVT.SOURCE_LANG = 'ESA'
AND FVT.LANGUAGE = 'ESA' AND FVT.LAST_UPDATE_LOGIN NOT IN (0) 
ORDER BY 1,2,3,5,7
;

诚挚的问候

票数 0
EN

Stack Overflow用户

发布于 2020-04-19 18:15:55

Blitz报告库中的这个SQL返回基于fnd_flex_value_norm_hierarchy的层次结构,所有这些都包含子flex值:https://www.enginatics.com/reports/fnd-flex-value-hierarchy/

代码语言:javascript
复制
select
lpad(' ',2*(level-1))||level level_,
lpad(' ',2*(level-1))||ffvnh.parent_flex_value value,
ffvv.description,
decode(ffvnh.range_attribute,'P','Parent','C','Child') range_attribute,
ffvnh.child_flex_value_low,
ffvnh.child_flex_value_high,
decode(connect_by_isleaf,1,'Yes') is_leaf,
connect_by_root ffvnh.parent_flex_value root_value,
substr(sys_connect_by_path(ffvnh.parent_flex_value,'-> '),4) path,
ffvnh.parent_flex_value value_flat
from
(
select
ffvnh.parent_flex_value,
ffvnh.child_flex_value_low,
ffvnh.child_flex_value_high,
ffvnh.range_attribute,
ffvnh.flex_value_set_id
from
fnd_flex_value_norm_hierarchy ffvnh
where
ffvnh.flex_value_set_id=(select ffvs.flex_value_set_id from fnd_flex_value_sets ffvs where ffvs.flex_value_set_name=:flex_value_set_name)
union all
select
ffv2.flex_value parent_flex_value,
null child_flex_value_low,
null child_flex_value_high,
'x' range_attribute,
ffv2.flex_value_set_id
from
fnd_flex_values ffv2
where
2=2 and
ffv2.summary_flag='N' and
ffv2.flex_value_set_id=(select ffvs.flex_value_set_id from fnd_flex_value_sets ffvs where ffvs.flex_value_set_name=:flex_value_set_name)
) ffvnh,
fnd_flex_values_vl ffvv
where
3=3 and
ffvnh.parent_flex_value=ffvv.flex_value and
ffvnh.flex_value_set_id=ffvv.flex_value_set_id
connect by nocycle
ffvnh.parent_flex_value between prior ffvnh.child_flex_value_low and prior ffvnh.child_flex_value_high and
decode(nvl(prior ffvnh.range_attribute,'P'),'P','Y','N')=ffvv.summary_flag
start with
ffvnh.parent_flex_value=:parent_flex_value and
1=1 and
(:parent_flex_value is not null or
not exists (select null from
fnd_flex_value_norm_hierarchy ffvnh0
where
ffvnh0.flex_value_set_id=(select ffvs.flex_value_set_id from fnd_flex_value_sets ffvs where ffvs.flex_value_set_name=:flex_value_set_name) and
ffvnh.parent_flex_value between ffvnh0.child_flex_value_low and ffvnh0.child_flex_value_high and
ffvv.summary_flag=decode(ffvnh0.range_attribute,'P','Y','N')
)
)

要查看所有层次结构(不同的父级顶值),请删除对父级flex值的'start with‘限制:

代码语言:javascript
复制
ffvnh.parent_flex_value=:parent_flex_value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19998984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档