我有一种情况,如果用户提示(1或0)= 1,那么它必须从对偶返回值,否则必须返回其他表数据
在查询下面,我已经尝试过:但是出现错误:值太多
with CTE_ACC_FNKEYS AS (
(select
CASE WHEN 1=1
--@Prompt('Users:','A','Customer\Customer Account\Source System Code',Mono,Free,Not_Persistent,,User:3) is not null
then (select e,f,g,h from dual)
else
(
SELECT
a,b,c,d
FROM
TABLE ( BI_RPT.GET_ACCOUNTDETAILS( 'ON897451','[SA].[0]') ))
end as b from dual
))
select * from CTE_ACC_FNKEYS
答案 0 :(得分:0)
@Ankit Bajpai评论后,您只能选择一个值。像这样:
with CTE_ACC_FNKEYS AS (
(select
CASE WHEN 1=1
then (select '0' from dual)
else
(
SELECT
'a'||'b'||'c'||'d'
FROM
dual)
end as b from dual
))
select * from CTE_ACC_FNKEYS;
Demo.如果您需要除此以外的其他内容,请更详细地说明并提供一些您希望得到的结果示例。干杯!
答案 1 :(得分:0)
您的代码及其解释似乎很混乱,但是我认为您尝试根据用户输入返回不同的结果。毫无疑问,不能将此逻辑合并到BI_RPT.GET_ACCOUNTDETAILS()中是有充分的理由的,但是用CASE解决它不是正确的方法。
一种解决方案是编写包装函数。但是最接近您当前代码的解决方案是UNION。
select a, b , c, d
from TABLE ( BI_RPT.GET_ACCOUNTDETAILS( 'ON897451','[SA].[0]') ))
where &&p_user_input = 0
union
select 0, 0, 0 , 0 -- or whatever is represented by e, f, g, h
from dual
where &&p_user_input != 0