日期:2014-05-17  浏览次数:20551 次

SQL 去掉重复数据
select NSRSBH,NSRMC,a.LXXDZ,a.ZLRQKS,a.ZLRQJS,SSSQ_Q,SSSQ_Z,
实交房产和城市房地产税,应交房产和城市房地产税,应交警戒线房产和城市房地产税,
实交营业税,应交营业税,应交警戒线营业税,
实交合计,应交合计,应交警戒线合计,
DataYear,DataMonth
from SBBDFX 
join  (
 select b.NSSBH,b.CZRXX,b.CZRZJHM,b.ZJ,b.JJX,b.CZMJ,b.LXXDZ,b.ZLRQKS,b.ZLRQJS,
sum(Convert(decimal(18,2),b.ZJ*0.05)) as 应交营业税,
sum(Convert(decimal(18,2),b.ZJ*0.12)) as 应交房产和城市房地产税,
sum( Convert(decimal(18,2),b.ZJ*0.05+ b.ZJ*0.12)) as 应交合计
 from (select * from tb_SBXFWSJ as s join tb_CZRXX as t on s.CQBH=t.FCBH where FCBH!='') as b
GROUP BY b.NSSBH,b.CZRXX,b.CZRZJHM,b.ZJ,b.JJX,b.CZMJ,b.LXXDZ,b.ZLRQKS,b.ZLRQJS

) as a on SBBDFX.NSRSBH=a.NSSBH   and SSSQ_Q=a.ZLRQKS and SSSQ_Z=a.ZLRQJS
join (
 select e.NSSBH,e.CZRXX,e.CZRZJHM,e.ZJ,e.JJX,e.CZMJ,e.LXXDZ,e.ZLRQKS,e.ZLRQJS,
sum(Convert(decimal(18,2),e.JJX*e.CZMJ*0.05)) as 应交警戒线营业税,
sum(Convert(decimal(18,2),e.JJX*e.CZMJ*0.12)) as 应交警戒线房产和城市房地产税,
sum( Convert(decimal(18,2),e.JJX*e.CZMJ*0.05+ e.JJX*e.CZMJ*0.12)) as 应交警戒线合计
 from (select * from tb_SBXFWSJ as s join tb_CZRXX as t on s.CQBH=t.FCBH where FCBH!='') as e
GROUP BY e.NSSBH,e.CZRXX,e.CZRZJHM,e.ZJ,e.JJX,e.CZMJ,e.LXXDZ,e.ZLRQKS,e.ZLRQJS
) as e on SBBDFX.NSRSBH=e.NSSBH  and SSSQ_Q=e.ZLRQKS and SSSQ_Z=e.ZLRQJS



这是三个表联查出来的数据  无奈的是共查出9条数据,其实只有三条,但这三条数据每条都重复了3遍,所以变成9条 DESTINCT也没用,哪位大神给个方法啊 急用啊 谢谢啦!
select SQL

------解决方案--------------------
最后+ group by    NSRSBH,NSRMC,a.LXXDZ,a.ZLRQKS,a.ZLRQJS,SSSQ_Q,SSSQ_Z,
实交房产和城市房地产税,应交房产和城市房地产税,应交警戒线房产和城市房地产税,
实交营业税,应交营业税,应交警戒线营业税,
实交合计,应交合计,应交警戒线合计,
DataYear,DataMonth

------解决方案--------------------
如果 select distinct 都去不掉,说明 你查询的数据可能有一对多的关系。。
------解决方案--------------------
引用:
试过了 楼上的方法不管用啊 
 用left join 呢?