龙蟒过江只为虫
2018-11-02 01:39
采纳率: 50%
浏览 585

ORACLE两表关联查询,求助。

模拟表结构

CREATE TABLE a (aid VARCHAR2(5), acou NUMBER(5, 2));
CREATE TABLE b (aid VARCHAR2(5), bcou NUMBER(5, 2));

模拟数据
INSERT INTO a (aid, acou) VALUES ('1', 50.0);
INSERT INTO b (aid, bcou) VALUES ('1', 30.0);
INSERT INTO b (aid, bcou) VALUES ('1', 40.0);

查询语句
SELECT ' ', SUM(acou) acou, SUM(bcou) bcou FROM a, b WHERE a.aid = b.aid;

错误结果集
' ', 100, 70

如何编写SQL语句正确分别统计两表的和,正确结果集应为
' ',50, 70

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_14823253 2018-11-02 01:52
    已采纳

    表关系给的不够详细,如果一定要A|B关联,按照你目前的表结构,可能无法实现你的要求
    如果想要满足你的要求,至少需要一个主键

    那这样

     SELECT ' ', SUM(ACOU) ACOU, SUM(BCOU) BCOU
      FROM (SELECT A.AID, A.ACOU, SUM(B.BCOU) BCOU
              FROM A, B
             WHERE A.AID = B.AID
             GROUP BY A.AID, A.ACOU);
    

    图片说明

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 龙蟒过江只为虫 2018-11-02 02:03

    根据楼上大神的思路继续迭代了一下。
    SELECT ' ', SUM(ACOU) ACOU, SUM(BCOU) BCOU FROM
    (SELECT A.AID, A.ACOU, SUM(B.BCOU) BCOU FROM (SELECT A.AID, SUM(ACOU) AS ACOU FROM A
    GROUP BY A.AID) A, B
    WHERE A.AID = B.AID
    GROUP BY A.AID, A.ACOU)

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题