日期:2014-05-16  浏览次数:20590 次

求sql多表查询语句



期望结果是三列:物料代码,在库数,在购数

在库数是用dbo.ICInventory.FItemID分组后 SUM(dbo.ICInventory.FQty) 数量,筛选条件为dbo.t_Item.FItemClassID = 4
在购数为dbo.POOrderEntry.FItemID分组后 SUM(dbo.POOrderEntry.FQty) 数量,无筛选条件

求sql语句(带数据库名称"dba1"),谢谢!
------解决方案--------------------
try this,

select a.FItemID '物料代码',
       isnull(b.FQty1,0) '在库数',
       isnull(c.FQty2,0) '在购数'
 from dba1.dbo.t_Item a
 left join 
 (select FItemID,sum(FQty) 'FQty1'
  from dba1.dbo.ICInventory
  group by FItemID) b on a.FItemID=b.FItemID
 left join 
 (select FItemID,sum(FQty) 'FQty2'
  from dba1.dbo.POOrderEntry
  group by FItemID) c on a.FItemID=c.FItemID
 where a.FItemClassID=4

------解决方案--------------------
改一下:

select a.FItemID as '物料代码',isnull(b.在库数,0) as '在库数' ,isnull(c.在购数,0) as '在购数' 

from t_Item a left join 
(
select FItemID,sum(FQty) as '在库数' from ICInventory group by FItemID
)b on a.FItemID=b.FItemID left join 
(
select FItemID ,sum(FQty) as '在购数' from POOrderEntry group by FItemID
)c on a.FItemID=c.FItemID
where a.FItemID=4



------解决方案--------------------
用这个试试:
select a.FItemID '物料代码',
       isnull(b.FQty1,0) '在库数',
       isnull(c.FQty2,0) '在购数'
 from dba1.dbo.t_Item a
 left join 
 (select FItemID,sum(FQty) [FQty1]
  from dba1.dbo.ICInventory
  group by FItemID) b on a.FItemID=b.FItemID
 left join 
 (select FItemID,sum(FQty) [FQty2]
  from dba1.dbo.POOrderEntry
  group by FItemID) c on a.FItemID=c.FItemID
 where a.FItemClassID=4