在子查询中出现 ORA-01427 错误和 ORA-00907 错误
Getting ORA-01427 error and ORA-00907 error in subquery
我在一个正常工作的查询中得到了这个:
decode(substr(X_AV_ID,1,3)
,'ECU','eCom'
, decode(aven.lib, 'eCom', 'eCom','Autre')) flag,
然后我想添加一个新参数(aven.lib Like '%Extra%' 并将其解码为 'extra')。
所以我创建了一个带有案例的子查询:
decode(substr(X_AV_ID,1,3),
'ECU', 'eCom',
(select Case
When aven.lib = 'eCom' Then 'eCom'
When aven.lib Like '%Extra%' Then 'extra'
Else 'Autre'
End
From table_x aven
Limit 1
)
) flag
我将结果限制为 1 以避开 ORA-01427 错误,但现在我遇到了 ORA-00907 错误。
我想在解码命令中使用类似的东西,但它不可用。
感谢您的帮助。
首先,将您的 decode
重写为 case
:
(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
when aven.lib = 'eCom' then 'eCom'
then 'Autre'
end) as flag
据推测,aven
已在查询中。所以,你可以这样做:
(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
when aven.lib = 'eCom' then 'eCom'
when aven.lib like '%Extra%' then 'extra'
then 'Autre'
end) as flag
注意:我也会一直使用 like
进行第一次比较,并且可能会结合前两个:
(case when X_AV_ID like 'ECU%' or aven.lib = 'eCom'
then 'eCom'
when aven.lib like '%Extra%'
then 'extra'
then 'Autre'
end) as flag
在案例中使用 regexp_like 效果很好,我得到的结果除外。
Case
When substr(X_AV_ID,1,3) = 'ECU' Then 'eCom'
When aven.lib= 'eCom' Then 'eCom'
When REGEXP_LIKE (aven.X_AV_LIBELLE, 'extra', 'i') Then 'extra'
Else 'Autre'
End
感谢您的帮助
我在一个正常工作的查询中得到了这个:
decode(substr(X_AV_ID,1,3)
,'ECU','eCom'
, decode(aven.lib, 'eCom', 'eCom','Autre')) flag,
然后我想添加一个新参数(aven.lib Like '%Extra%' 并将其解码为 'extra')。
所以我创建了一个带有案例的子查询:
decode(substr(X_AV_ID,1,3),
'ECU', 'eCom',
(select Case
When aven.lib = 'eCom' Then 'eCom'
When aven.lib Like '%Extra%' Then 'extra'
Else 'Autre'
End
From table_x aven
Limit 1
)
) flag
我将结果限制为 1 以避开 ORA-01427 错误,但现在我遇到了 ORA-00907 错误。
我想在解码命令中使用类似的东西,但它不可用。
感谢您的帮助。
首先,将您的 decode
重写为 case
:
(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
when aven.lib = 'eCom' then 'eCom'
then 'Autre'
end) as flag
据推测,aven
已在查询中。所以,你可以这样做:
(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
when aven.lib = 'eCom' then 'eCom'
when aven.lib like '%Extra%' then 'extra'
then 'Autre'
end) as flag
注意:我也会一直使用 like
进行第一次比较,并且可能会结合前两个:
(case when X_AV_ID like 'ECU%' or aven.lib = 'eCom'
then 'eCom'
when aven.lib like '%Extra%'
then 'extra'
then 'Autre'
end) as flag
在案例中使用 regexp_like 效果很好,我得到的结果除外。
Case
When substr(X_AV_ID,1,3) = 'ECU' Then 'eCom'
When aven.lib= 'eCom' Then 'eCom'
When REGEXP_LIKE (aven.X_AV_LIBELLE, 'extra', 'i') Then 'extra'
Else 'Autre'
End
感谢您的帮助