日期:2014-05-18  浏览次数:20662 次

[再求解]SELECT查询2个表里面的数据

表1:入库资料,字段:入库日期,入库金额,入库单位编号,入库单位名称....
表2:入库付款资料,字段:所属入库年份,所属入库月份,入库单位编号,已付款金额....

查询想到2表合在一起的数据:

入库单位名称,所属入库年份,入库金额,已付款金额....

原贴地址:http://topic.csdn.net/u/20111102/14/28c23855-57db-4b6f-a065-8459f74605c4.html?16474

#6楼 得分:0回复于:2011-11-02 15:42:46引用 5 楼 qianjin036a 的回复:
引用 4 楼 jarkar 的回复:
引用 2 楼 qianjin036a 的回复:
SQL code

select a.入库单位名称,b.入库年份,sum(a.入库金额),sum(b.已付款金额)
from 表1 a inner join 表2 b on a.入库单位编号=b.入库单位编号 and year(a.入库日期)=convert(int,left(b.入库年份,4)) group by a.入库单位名称,b.入库……



查询出来了,不过资料只有已付款的,那些没有付款的但有入库金额的都没有列出来,求高手解决 


------解决方案--------------------
select a.入库单位名称,b.入库年份,sum(a.入库金额),sum(b.已付款金额)
from 表1 a left join 表2 b on a.入库单位编号=b.入库单位编号 and year(a.入库日期)=convert(int,left(b.入库年份,4)) group by a.入库单位名称,b.入库……


------解决方案--------------------
SQL code
select a.入库单位名称,b.入库年份,sum(a.入库金额),sum(b.已付款金额)
       sum(case when b.已付款金额 is null then a.入库金额 else 0 end)
from 表1 a left join 表2 b on a.入库单位编号=b.入库单位编号 and year(a.入库日期)=convert(int,left(b.入库年份,4)) group by a.入库单位名称,b.入库……

------解决方案--------------------
SQL code
select a.入库单位名称,b.入库年份,sum(a.入库金额),sum(b.已付款金额),
       sum(case when b.已付款金额 is null then a.入库金额 else 0 end)
from 表1 a left join 表2 b on a.入库单位编号=b.入库单位编号 
  and year(a.入库日期)=convert(int,left(b.入库年份,4)) group by a.入库单位名称,b.入库……

------解决方案--------------------
try:
SQL code
SELECT a.rk_dwid,a.rk_dw as dwmc,year(a.rk_date) as 入库年份,SUM(a.rk_spzj) as fkje,SUM(b.yfl_fkje) as yfje,SUM(a.rk_spzj)-SUM(b.yfl_fkje) as 未付金额
FROM rkd a left join ysyfjl b on a.rk_dwid=b.gg_id and YEAR(a.rk_date)=convert(int,LEFT(b.yfl_nf,4)) and b.yfl_type='gys' and b.yfl_mark='付款'
where a.rk_style='正常入库' and a.rk_fbbj='000'
group by a.rk_dwid,a.rk_dw,year(a.rk_date)