我有二个SQL表,入库表和出库表,商品名称和商品规格完全相同时,求库存数量和库存金额?下面是我写的SQL语句:
SELECT TOP 100 PERCENT ISNULL(SUM(dbo.入库.数量), 0) - ISNULL(SUM(dbo.出库.数量), 
      0) AS 库存数量, ISNULL(SUM(dbo.入库.金额), 0) - ISNULL(SUM(dbo.出库.金额), 0) AS 库存金额,MAX(dbo.入库.商品名称) AS 商品名称, MAX(dbo.入库.商品规格) AS 商品规格, 
      dbo.入库.单位名称, dbo.入库.物料类型, dbo.入库.仓库编号
FROM dbo.出库 INNER JOIN
      dbo.入库 ON dbo.出库.商品名称 = dbo.入库.商品名称 AND 
      dbo.出库.商品规格 = dbo.入库.商品规格
GROUP BY dbo.入库.单位名称, dbo.入库.商品名称, dbo.入库.物料类型, dbo.入库.是否入库, 
      dbo.入库.仓库编号ORDER BY dbo.入库.商品名称

解决方案 »

  1.   

    不明白你要什么
     dbo.入库.单位名称, dbo.入库.商品名称, dbo.入库.物料类型, dbo.入库.是否入库, 
          dbo.入库.仓库编号
    必须要在select里
      

  2.   

    我想通过以上的SQL语句,做个视窗,要有以下字段:库存数量,库存金额,商品名称,商品规格,单位名称,物料类型,仓库编号
      

  3.   

    樓主的意思太不明瞭MAX(dbo.入库.商品名称) AS 商品名称, MAX(dbo.入库.商品规格) AS 商品规格
    為何要求它們的最大值?
      

  4.   

    MAX(...)那里是写错了,我只是想求库存的数量和金额,显示库存数量、库存金额,单位,商品名称,商品规格就可以了,我把SQL语句改了一下也不行:
    SELECT TOP 100 PERCENT ISNULL(SUM(dbo.入库.数量), 0) - ISNULL(SUM(dbo.出库.数量), 
          0) AS 数量, ISNULL(SUM(dbo.入库.金额), 0) - ISNULL(SUM(dbo.出库.金额), 0) 
          AS 金额
    FROM dbo.出库 INNER JOIN
          dbo.入库 ON dbo.入库.商品名称 = dbo.出库.商品名称 AND 
          dbo.入库.商品规格 = dbo.出库.商品规格
      

  5.   

    SELECT  A.商品名称,A.商品规格,A.单位名称,SUM(B.数量)-SUM(A.数量)AS 数量,
            SUM(B.金额)-SUM(B.金额) AS 金额 
    FROM    dbo.出库 A INNER JOIN 
            dbo.入库 B ON A.商品名称 = B.商品名称 AND A.商品规格 = B.商品规格 
    GROUP BY A.商品名称,A.商品规格,A.单位名称 
    ORDER BY A.商品名称,A.商品规格,A.单位名称
    这样应该可以了吧
      

  6.   

    brother2605(幽灵) ,我按你的方法做还是不行,执行SQL语句,查询出来是空记录
      

  7.   

    -- 建立测试环境create table [入库](
    商品名称 char(20),
    商品规格 char(50),
    单位名称 char(10),
    仓库编号 char(10),
    物料类型 char(10),
    数量 numeric(11,3),
    金额 numeric(11,3))
    create table [出库](
    商品名称 char(20),
    商品规格 char(50),
    单位名称 char(10),
    仓库编号 char(10),
    物料类型 char(10),
    数量 numeric(11,3),
    金额 numeric(11,3))
     
    insert into 入库
    select 'AA','6*1KG','箱','0001','01',100,8888 
    union all 
    select 'AB','6*1KG','箱','0002','01',100,8888 
    union all 
    select 'AA','3*1KG','箱','0001','02',100,4444 
    union all 
    select 'AB','3*1KG','箱','0002','02',100,4444  
    union all 
    select 'AB','6*1KG','箱','0003','03',100,8888 
    union all 
    select 'AA','3*1KG','箱','0004','04',100,4444 
    union all 
    select 'AB','3*1KG','箱','0005','05',100,4444  
    go
    insert into 出库
    select 'AA','6*1KG','箱','0001','01',50,4444 
    union all 
    select 'AB','6*1KG','箱','0001','01',50,4444 
    union all 
    select 'AA','3*1KG','箱','0002','02',200,8888 
    union all 
    select 'AB','3*1KG','箱','0002','02',200,8888  
    union all 
    select 'AB','6*1KG','箱','0006','06',100,8888 
    union all 
    select 'AA','3*1KG','箱','0005','07',100,4444 
    union all 
    select 'AB','3*1KG','箱','0004','08',100,4444  
    go 
    SELECT  A.商品名称,A.商品规格,A.单位名称,A.仓库编号,SUM(B.数量)-SUM(A.数量)AS 数量,
            SUM(B.金额)-SUM(A.金额) AS 金额 
    FROM    dbo.出库 A INNER JOIN 
            dbo.入库 B ON A.商品名称 = B.商品名称 AND A.商品规格 = B.商品规格 AND A.仓库编号=B.仓库编号  
    GROUP BY A.商品名称,A.商品规格,A.单位名称,A.仓库编号 
    ORDER BY A.商品名称,A.商品规格,A.单位名称,A.仓库编号 drop table 入库
    drop table 出库 /*
    商品名称  商品规格 单位名称 仓库编号  数量        金额
    AA         6*1KG      箱     0001     50.000    4444.000
    AB         3*1KG      箱     0002     -100.000  -4444.000
    */
    请问你是要这样的结果吗?