我有 货物表
  id sum WarehouseID //Warehouse是仑库,sum是货物存放的所占的容量
  1 10 001
  2 20 001
  3 10 002仑库表
  WarehouseID Capacity//仑库的总容量
  001 100
  002 20现在我想结果如下,
  WarehouseID   
  001 70
  002 10
就是现在仓库(如:001,002)还有多少剩于容量。

解决方案 »

  1.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:货物表
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'货物表') 
    AND type in (N'U')) 
    DROP TABLE 货物表
    GO---->建表
    create table 货物表([id] int,[sum] int,[WarehouseID] varchar(3))
    insert 货物表
    select 1,10,'001' union all
    select 2,20,'001' union all
    select 3,10,'002'
    GO--> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:仑库表
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'仑库表') 
    AND type in (N'U')) 
    DROP TABLE 仑库表
    GO---->建表
    create table 仑库表([WarehouseID] varchar(3),[Capacity] int)
    insert 仑库表
    select '001',100 union all
    select '002',20
    GO--> 查询结果
    SELECT * FROM 货物表
    --> 删除表格
    --DROP TABLE 货物表
    --> 查询结果
    SELECT a.WarehouseID,a.Capacity-sum(b.[sum]) FROM 仑库表 a join 货物表 b 
    on a.WarehouseID=b.WarehouseID
    group by a.WarehouseID,a.Capacity
    --> 删除表格
    --DROP TABLE 仑库表
      

  2.   

    select WarehouseID,
           sum([sum])剩于容量
    from(
    select WarehouseID,-[sum] 货物表
    union all
    select WarehouseID,Capacity from 仑库表
    )t
    group by WarehouseID