0

我在这里使用两个表projections_report paccess_rights a. 我无法找出我收到错误的原因:

子查询返回多于一行

(case when paramChannel='AllC' then p.gl_sal_chan in 
      (case when dc_lob=0 then (select distinct pr.gl_sal_chan from 
          projections_report pr) else (select distinct pr1.gl_sal_chan
                 from projections_report pr1 where pr1.gl_sal_chan 
                 in (select distinct a.gl_sal_chan from access_rights 
                 a where a.userid= paramUserId)) end) 
 else p.gl_sal_chan = paramChannel end)

我尝试使用所有和任何关键字。请帮忙。

提前致谢。

4

2 回答 2

0

我试图以另一种方式做到这一点并且做对了。首先,我将第二个 case 语句的 else 条件中的语句更改为

(select distinct gl_sal_chan from access_rights where userid = paramUserid)

因为两者都返回相同的结果(我的错误),其次我将整个条件更改为

(case when (paramChannel = 'AllC' && dc_lob = 0) then '%' = '%' else 
    (case when (paramChannel='AllC' && dc_lob != 0) then 
    gl_sal_chan in (select distinct gl_sal_chan from access_rights where userid = paramUserid) 
else gl_sal_chan= paramChannel end)end)

无论如何谢谢@all :)

于 2012-08-23T09:58:21.660 回答
0

在子查询中使用 LIMIT 以仅返回一条记录,因为您使用的是 distinct,它可能返回多条记录

于 2012-08-23T10:01:40.557 回答