在同一个SQL查询中运行正常拉和求和()

问题描述:

我正在寻找运行以下两个查询作为单个查询,并在如何这样做是在一个损失。此(1行DATA1,DATA2的,每个ID DATA3):在同一个SQL查询中运行正常拉和求和()

SELECT 

ID 
DATA1 
DATA2 
DATA3 

FROM TABLE1 

而这个(DATA 4的多个行和每ID 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用户,所以我不知道还有什么可以抛弃它。

谢谢!

您可以添加额外的列到selectgroup 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; 

如果想只在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 

完成这样你会得到SUM_DATA4和SUM_DATA5相同的值,如果ID每个值,无论DATA1,DATA2,DATA3和价值观。

祝你好运。