有这么一个表:
ProductID, QTY, TYPE
1          10   出库
1          5    入库
2          20   出库
3          15   入库我想把他们作成一个view的效果
ProductID 出库数 入库数  剩余
1         10     5       -5
2         20     0       -20
3         0      15      15请教sql语句该怎么写

解决方案 »

  1.   

    create table t(ProductID int,QTY int,TYPE varchar(10))
    insert t select 1,10,'出库'
    union all select 1,5,'入库'
    union all select 2,20,'出库'
    union all select 3,15,'入库'select ProductID,
    出库数=sum(case when TYPE='出库' then QTY else 0 end),
    入库数=sum(case when TYPE='入库' then QTY else 0 end),
    剩余=sum(case when TYPE='入库' then QTY else -QTY end)
    from t
    group by ProductIDProductID   出库数         入库数         剩余          
    ----------- ----------- ----------- ----------- 
    1           10          5           -5
    2           20          0           -20
    3           0           15          15
      

  2.   

    --用case when 处理select 
          ProductID,
          sum(case when TYPE='出库' then QTY else 0 end) as 出库数,
          sum(case when TYPE='入库' then QTY else 0 end) as 入库数,
          sum(case when TYPE='入库' then QTY else -QTY end) as 剩余
    from 表名
    group by ProductID
    order by ProductID
      

  3.   

    SELECT ProductID,
           SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
           SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
           SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE -QTY END) 剩余
    FROM tblTest
    GROUP BY ProductID
    ORDER BY ProductID
      

  4.   

    SELECT ProductID,
           SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
           SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
           SUM(CASE WHEN TYPE = '剩余' THEN QTY ELSE -QTY END) 剩余
    FROM tblTest
    GROUP BY ProductID
    ORDER BY ProductID
      

  5.   

    SELECT ProductID,
           SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
           SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
           SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE -QTY END) 剩余
    FROM tblTest
    GROUP BY ProductID
    ORDER BY ProductID
    ---------------------------------------------------------------------
    看错了,不好意思: 剩余 = 入库 - 出库