【发布时间】:2013-11-21 14:47:39
【问题描述】:
Select
Xyz,
CASE
WHEN 'AEJ-DODGE-AC-'
||measure IN
(SELECT child
FROM interim_dim_measures_mas
WHERE child LIKE 'AEJ-DODGE-AC%'
CONNECT BY prior child = parent
START WITH parent = 'Total Revenue (GBS).1'
)
THEN -1*CAST(datavalue AS FLOAT)
ELSE CAST(datavalue AS FLOAT)
END AS amount
FROM interim_data_misbaej,
w_csrbrd
WHERE LENGTH(period) = 3
AND 'AEJ-BK-'
|| book = region_book(+)
【问题讨论】:
-
这是一种非常不寻常的语法。你想用 || 来完成什么?建造?另外,为什么有子查询是个问题?最后,您现有的查询现在真的有效吗?
-
那个'||'部分不重要;子查询被执行5亿次并杀死性能的问题;表 interim_data_misbaej 有 450 万行, w_csrbrd 有 5000 行;所以想知道从选择子句中删除该子查询的等效 sql
-
好的,我发现这是一个 Oracle 问题,我没有资格提供非常有用的帮助。但我确实修复了标签,所以也许其他人会拿起它。