我希望将以下两个查询作为单个查询运行,并且不知道如何执行此操作。这(每个ID的1行DATA1,DATA2,DATA3):
SELECT
ID
DATA1
DATA2
DATA3
FROM TABLE1
这个(每个ID有多行DATA 4和DATA5):
SELECT
TABLE1.ID
SUM(TABLE2.DATA4)
SUM(TABLE2.DATA5)
FROM TABLE1
JOIN TABLE2
ON TABLE2.ID = TABLE1.ID
GROUP BY ID;
输出是单个表(100k~行)的列,其中包含列:ID,DATA1,DATA2,DATA3,SUM(DATA4),SUM(DATA5)。
这可能吗?试图使用UNION,它说我需要为每个查询使用相同的表达式,这是有道理的。中级SQL用户所以我不确定还有什么可以投入其中。
谢谢!
答案 0 :(得分:0)
您可以将额外的列添加到select
和group by
:
SELECT t1.ID, t1.DATA1, t1.DATA2, t1.DATA3,
SUM(t2.DATA4), SUM(t2.DATA5)
FROM TABLE1 t1 JOIN
TABLE2 t2
ON t2.ID = t1.ID
GROUP BY t1.ID, t1.DATA1, t1.DATA2, t1.DATA3;
答案 1 :(得分:0)
如果想要仅对ID进行分组的总和,您可以将总和作为子选择执行并将其连接回主查询:
SELECT t1.ID, t1.DATA1, t1.DATA2, T1.DATA3, ss.TOT_DATA4, ss.TOT_DATA5
FROM TABLE1 t1
INNER JOIN (SELECT ID, SUM(DATA4) AS TOT_DATA4, SUM(DATA5) AS TOT_DATA5
FROM TABLE1
GROUP BY ID) ss
ON ss.ID = t1.ID
以这种方式完成,如果ID,您将获得与SUM_DATA4和SUM_DATA5相同的值,无论DATA1,DATA2和DATA3值如何。
祝你好运。