2016-09-16 97 views
0

IM面临SQL有点问题加入SQL鲜明加入

我有2个表

*1st table*     *2nd table* 
Reference Name    Reference Amount 
123   Test1   123   52 
145   Test2   232   22 
123   Test3   123   33 
555   Test4   145   44 
123   Test5   656   55 

我需要这样的东西

select distinct(a.reference), sum(b.amount) from 1st a left join 2nd b ON a.Reference = b.Reference group by a.reference 

这看起来很简单,对我来说它做什么 - 它给我多次SUM参考是123,所以它会给我(52 + 33)* 3

我应该使用什么来获得每个引用的唯一SUM?

Thx!

编辑:

最终的结果应该看起来像

123 85 
145 44 
+0

请编辑您的问题,并提供您正在寻找的结果。你不会在任何地方解释你想要什么。 –

回答

1

执行distinctjoin

select a.reference, sum(b.amount) 
from (select distinct reference from a) a left join 
    b 
    a.Reference = b.Reference 
group by a.reference; 

你几乎永远不会需要使用select distinctgroup by

+0

现在工作!谢谢 – DaytonaGuy

0

您的查询是不正确,

,因为我们通过有一群你不应该使用不同的..

所以,你应该是有可能的,

select a.reference, sum(b.amount) from 1st a 
left join 2nd b ON a.Reference = b.Reference group by a.reference 
0

你也可以使用一个CTE来解决您的问题:

WITH cte 
AS 
(

SELECT DISTINCT reference FROM 1st 

) 

SELECT a.reference, SUM(b.amount) 
FROM cte a 
LEFT JOIN 2nd b ON a.Reference = b.Reference 
GROUP BY a.reference