SQL鲜明加入
问题描述:
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
答
执行distinct
前join
:
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 distinct
与group by
。
+0
现在工作!谢谢 – DaytonaGuy
答
您的查询是不正确,
,因为我们通过有一群你不应该使用不同的..
所以,你应该是有可能的,
select a.reference, sum(b.amount) from 1st a
left join 2nd b ON a.Reference = b.Reference group by a.reference
答
你也可以使用一个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
请编辑您的问题,并提供您正在寻找的结果。你不会在任何地方解释你想要什么。 –