分组求和

HelloWordGirl 2015-05-25 04:21:21
我写的脚本为
--拉取数据
SELECT
i.IncomingID,
ti.TaxID,
odi.OutgoingID,
tii.MatchQty AS taxmatch,
oii.MatchQty AS outmatch
FROM IncomingData_Info i
LEFT JOIN Tax_Incoming_Info tii ON i.VGUID=tii.Incoming_VGUID
LEFT JOIN Tax_Info ti on ti.VGUID=tii.Tax_VGUID AND ti.ImportDate<='2015-06-01'
LEFT JOIN Outgoing_Incoming_Info oii ON oii.Incoming_VGUID=i.VGUID
LEFT JOIN OutgoingData_Info odi ON odi.VGUID=oii.Outgoing_VGUID
WHERE i.GoodsType='FGB' AND i.IsExport=1
AND i.ImportDate<='2015-06-01'
--求和
SELECT
i.IncomingID,
sum(distinct tii.MatchQty)AS taxmatch,
sum(DISTINCT oii.MatchQty)AS outmatch
FROM IncomingData_Info i
LEFT JOIN Tax_Incoming_Info tii ON i.VGUID=tii.Incoming_VGUID
LEFT JOIN Tax_Info ti on ti.VGUID=tii.Tax_VGUID AND ti.ImportDate<='2015-06-01'
LEFT JOIN Outgoing_Incoming_Info oii ON oii.Incoming_VGUID=i.VGUID
LEFT JOIN OutgoingData_Info odi ON odi.VGUID=oii.Outgoing_VGUID
WHERE i.GoodsType='FGB' AND i.IsExport=1
AND i.ImportDate<='2015-06-01'
GROUP BY i.IncomingID
因为RK001对应一个TaxID,对应4个OutID,4个OutID的值有两个相同了,所以我用以上的方式Distinct求和求和是错误的,4个OutID只取了两个。该如何处理呢
...全文
178 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-05-25
  • 打赏
  • 举报
回复
就是统计 tax 的时候不连 out,就不会有重复 taxID 了吧。
反过来也一样。
SELECT t1.IncomingID,
t1.taxmatch,
t2.outmatch
FROM (SELECT i.IncomingID, SUM(tii.MatchQty) taxmatch
FROM ...
GROUP BY i.IncomingID
) t1
JOIN (SELECT i.IncomingID, SUM(oii.MatchQty) taxmatch
FROM ...
GROUP BY i.IncomingID
) t2
ON t1.IncomingID = t2.IncomingID
HelloWordGirl 2015-05-25
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
先做两个分组统计,然后 JOIN 起来。
不是太明白您的意思
Tiger_Zhao 2015-05-25
  • 打赏
  • 举报
回复
先做两个分组统计,然后 JOIN 起来。
HelloWordGirl 2015-05-25
  • 打赏
  • 举报
回复
我想得到的结果是RK001上的OutMatch值是1200并不是1000,因为OutID007与OutID001的值是相同的,但是ID不同,不能用Distinct来去重复求和

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧