我有三个表TeamTerritoryMapping
,UpdQuotaTbl
和tblInvoiceFile
当我加入前两张表时,我得到了正确的结果
select
TTM.Team, Sum(Upd.Quota) as Quota
from
TeamTerritoryMapping TTM
inner join
UpdQuotaTbl upd on upd.ITM = TTm.Territory
where
upd.Month = 'july'
group by
TTM.Team
但当我从第三个表加入来自tblinvoicefile
的另一个列收入时,某些行会重复,最终结果会变得更高。以下是我用来加入3个表格的查询
select
TTM.Team,
Sum(upd.Quota) as quota,
sum(inv.[End MS Sales Revenue]) as Revenue
from
UpdQuotaTbl Upd
inner join
TeamTerritoryMapping TTM on TTM.Territory = upd.ITM
inner join
tblInvoiceFile inv on inv.[Inv Territory] = TTM.Territory
where
upd.Month = 'july'
and inv.[End Fiscal Month] = 'July, 2013'
那么如何根除第三个表中的重复值,当我加入两个表时,我得到了正确的值,即TeamTerritoryMapping,UpdQuotaTbl
和表TeamTerritoryMapping
。
答案 0 :(得分:1)
看起来tblInvoiceFile有多个[Invenio Territory]的entires导致了这个问题。如果您的目的是引入并汇总该表的所有[结束MS销售收入],您可以尝试这样的事情
SELECT TTM.Team,Sum(upd.Quota) as quota,sum(inv.[End MS Sales Revenue]) as Revenue
FROM UpdQuotaTbl Upd
INNER JOIN TeamTerritoryMapping TTM ON TTM.Territory = upd.ITM
INNER JOIN
(SELECT [Invenio Territory], SUM([End MS Sales Revenue]) AS [End MS Sales Revenue]
FROM tblInvoiceFile
WHERE [End Fiscal Month] = 'July, 2013'
GROUP BY [Invenio Territory]) AS inv
ON inv.[Invenio Territory] = TTM.Territory
WHERE upd.Month = 'july'
答案 1 :(得分:0)
我的初步回答是:您多次获得某些结果的原因是因为用于加入ON
的{{1}}不够“独特”。如果您查看所述表的主键(或唯一?),您可能会注意到它不仅仅涉及tblInvoiceFile
字段。
要解决这个问题,你可以做两件事。
Inv Territory
子句以包含更多使连接唯一的字段ON
med 问题是,好像你已经SUM
了解信息(虽然如Win所说,你错过了SUM()
),所以我不太清楚为什么这不行。
更新:现在才意识到你的问题不是加倍记录,而是在第一个SUM()中加倍。解决这个问题的最佳方法是通过预聚合Abhi所示的值。