模拟表结构
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
表关系给的不够详细,如果一定要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);
根据楼上大神的思路继续迭代了一下。
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)