ORA-01427 单行子查询返回多于一行

Posted

技术标签:

【中文标题】ORA-01427 单行子查询返回多于一行【英文标题】:ORA-01427 single-row subquery returns more than one row 【发布时间】:2016-01-20 08:55:43 【问题描述】:

我有这样的查询:

select bb10.ID_SEKTOR_10 as kode, 
bb10.NAME_SEKTOR_10 as sektor10,
(
    select count(*) as HUBBNI_SEKTOR_EKONOMI10 
    from bbcust_debitur_dev 
    where HUBBNI_SEKTOR_EKONOMI10 = bb10.ID_SEKTOR_10
    and STATUS = 2 
    group by HUBBNI_SEKTOR_EKONOMI10
) as total_sek_10,
(
    select  sum( distinct bbcd.baki_debet) as baki_debet
    from bbcust_cashloan_dev bbcd, bbcust_debitur_dev bdd
    where bbcd.row_id = bdd.row_id 
    and bdd.HUBBNI_SEKTOR_EKONOMI10 = bb10.ID_SEKTOR_10
    and bbcd.status =1 and bdd.status=2
    group by bdd.row_id
) as total_rek_10
from BBCUST_SEKTOR_10_DEV bb10;

我收到一个错误

ORA-01427 单行子查询返回多行

但在我只有这样的数据之前,我没有任何错误。 此查询没有任何错误。

select bb10.ID_SEKTOR_10 as kode, 
bb10.NAME_SEKTOR_10 as sektor10,
(
    select count(*) as HUBBNI_SEKTOR_EKONOMI10 
    from bbcust_debitur_dev 
    where HUBBNI_SEKTOR_EKONOMI10 = bb10.ID_SEKTOR_10
    and STATUS = 2 
    group by HUBBNI_SEKTOR_EKONOMI10
) as total_sek_10
from BBCUST_SEKTOR_10_DEV bb10;

结果是这样的:

bbcust_cash_loan 的结构如下:

对于数据库的结构是:bbcust_debitur_devBBCUST_SEKTOR_10_DEVbbcust_cashloan_dev 有关系。

我想计算bbcust_cashloan_dev 中的每个值,但我需要知道BBCUST_SEKTOR_10_DEV 中的所有数据。这就是我加入所有数据的原因,所以我从bbcust_cashloan_dev 获得总价值,其中BBCUST_SEKTOR_10_DEV 中的数据。

你能告诉我如何解决我的查询吗?

【问题讨论】:

只需从子查询中删除 group by 子句。这里不需要 Group by 子句。 @Md.ShamimAlMamun 你能在回答问题上发帖吗,我会投票给你,谢谢。 【参考方案1】:

试试这个......

select bb10.ID_SEKTOR_10 as kode, 
bb10.NAME_SEKTOR_10 as sektor10,
(
    select count(*) as HUBBNI_SEKTOR_EKONOMI10 
    from bbcust_debitur_dev 
    where HUBBNI_SEKTOR_EKONOMI10 = bb10.ID_SEKTOR_10
    and STATUS = 2 
    ) as total_sek_10,
(
    select  sum( distinct bbcd.baki_debet) as baki_debet
    from bbcust_cashloan_dev bbcd, bbcust_debitur_dev bdd
    where bbcd.row_id = bdd.row_id 
    and bdd.HUBBNI_SEKTOR_EKONOMI10 = bb10.ID_SEKTOR_10
    and bbcd.status =1 and bdd.status=2
    ) as total_rek_10
from BBCUST_SEKTOR_10_DEV bb10;

group by bdd.row_id 有可能返回不止一行。如果不了解您的业务,就不可能提出建议。

【讨论】:

以上是关于ORA-01427 单行子查询返回多于一行的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL:ORA-01427:单行子查询返回多于一行

ORA-01427 单行子查询返回多于一行

ORA-01427: 单行子查询返回多于一行 ,,WHEN USING SELECT COUNT

我得到那个错误 ORA-01427: 单行子查询返回多于一行

Oracle APEX 交互式报告中的错误 - ORA-01427:单行子查询返回多于一行

ORA-01427单行子查询返回多于 1 行