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条数据说下
------解决思路----------------------
SUM 简单解决这个问题。
------解决思路----------------------
建议你用临时表吧, 别写一起了,太乱。
------解决思路----------------------
先按ct_id对flypm_contractGathering进行集计,再用集计的子查询去替代原来的flypm_contractGathering做左联
------解决思路----------------------
用distinct去除重复
------解决思路----------------------
别考虑distinct你这问题不是简单distinct能解决的,自己改下sql,先按ct_id对flypm_contractGathering进行集计,再用集计的子查询去替代原来的flypm_contractGathering做左联