当前位置: 代码迷 >> Sql Server >> sql查询去重复有关问题,在线求大神帮忙啊
  详细解决方案

sql查询去重复有关问题,在线求大神帮忙啊

热度:2   发布时间:2016-04-24 09:53:58.0
sql查询去重复问题,急急急,在线求大神帮忙啊。


SELECT    t.CP_Name as stype,h.CP_Name as sindu,sum(isnull(c.CT_ConMoney,0)) as samount,
isnull(sum(g.CG_GathingMoney),0) as spay
FROM         CommonParameter t
Left join FlyPM_Contract c on c.CT_ConClassify=t.CP_ID and c.CT_ConStatus <> 'CP1108191039380001'
and c.ct_consigndate between '2001-1-1' and '2014-12-12'
LEFT JOIN CommonParameter h on c.CT_ConType = h.CP_ID
LEFT JOIN flypm_contractGathering g on c.ct_id=g.ct_id
WHERE     t.CPC_ID = 'CPC110409084846000139' 
group by t.CP_Name,h.CP_Name,t.CP_Index,g.CG_GathingMoney
ORDER BY t.CP_Index,t.CP_Name




根据stype和sindu来去重复,就是3个samount=123的重复,值保留一个。这个怎么弄,求大神帮忙啊。在线等
------解决思路----------------------
你没发现那3个123的spay不一样吗?这字段你不要了?
------解决思路----------------------
max、sum这些都可以去掉,具体看你的需求
------解决思路----------------------
引用:
这3条数据是同一条数据,spay是另一个表的关联过去的。

你源数据也不给下,你哪张表会连出3条数据说下
------解决思路----------------------
SUM 简单解决这个问题。
------解决思路----------------------
建议你用临时表吧, 别写一起了,太乱。
------解决思路----------------------
先按ct_id对flypm_contractGathering进行集计,再用集计的子查询去替代原来的flypm_contractGathering做左联
------解决思路----------------------
用distinct去除重复
------解决思路----------------------
引用:
Quote: 引用:

用distinct去除重复
在那里用?帮我在那个sql语句上写下。谢谢。

别考虑distinct你这问题不是简单distinct能解决的,自己改下sql,先按ct_id对flypm_contractGathering进行集计,再用集计的子查询去替代原来的flypm_contractGathering做左联 
  相关解决方案