0

查询

SELECT DISTINCT st_str_hry.id_str_rt,
  decode(co_strgp.nm_strgp,'HOLLAND & BARRETT','H&B','GNC UK','GNC')brandName
FROM co_strgp,
     st_str_hry
WHERE co_strgp.id_strgp=st_str_hry.id_strgp
  AND co_strgp.nm_strgp in(nvl(:brandName,
                                 (SELECT co_strgp.nm_strgp
                                  FROM co_strgp
                                  WHERE id_strgp_lv='2'
                                    AND id_strgp in
                                      (SELECT DISTINCT id_strgp
                                       FROM st_str_hry
                                       WHERE id_str_rt in
                                           (SELECT DISTINCT id_str_rt
                                            FROM NBTY_TR_LTM_AER_RTN)))));

这里 nvl 部分正在投掷ora-01427 error,上面写着single query returning multiple rows

4

2 回答 2

0

询问

SELECT co_strgp.nm_strgp
  FROM co_strgp
 WHERE id_strgp_lv='2'
   AND id_strgp in (SELECT DISTINCT id_strgp
                      FROM st_str_hry
                     WHERE id_str_rt in (SELECT DISTINCT id_str_rt
                                           FROM NBTY_TR_LTM_AER_RTN))

正在返回几行,但它必须只返回一行

于 2014-02-18T10:48:33.047 回答
0

将包含子查询的代码部分重写为:

AND co_strgp.nm_strgp in(
           ( SELECT nvl( :brandName,co_strgp.nm_strgp )
             FROM co_strgp
             WHERE id_strgp_lv='2'
               AND id_strgp in
                   (SELECT DISTINCT id_strgp
                    FROM st_str_hry
                    WHERE id_str_rt in
                          (SELECT DISTINCT id_str_rt
                            FROM NBTY_TR_LTM_AER_RTN)))));
于 2014-02-18T10:51:09.623 回答