日期:2014-05-17  浏览次数:20533 次

一个人员进销存借物SQL
SQL SERVER 2005

表:
编号,用户ID,物料编号,物料名,数量,出入,时间
 1      333     B123      XX     10    -1    20110101 
 2      333     B123      XX      5     1    20110105 
 3      333     B111      X1     30    -1    20110102
 4      333     B112      X2     13    -1    20110106
 5      333     B112      X2     13     1    20110109

出入:-1是借出,1是归还。

现在想统计333这个用户个人借物情况,统计表如下。

用户ID,物料编号,物料名,借出数量,归还数量,未归还数量。
  333     B123      XX       10         5         5
  333     B111      X1       30         0         30
  333     B112      X2       13        13         0 

有没有效率高一点的SQL

------解决方案--------------------
with cte(编号,用户ID,物料编号,物料名,数量,出入,时间)
as
(
select     1     ,333     ,'B123'      ,'XX'     ,10    ,-1    ,20110101 union all
select     2     ,333     ,'B123'      ,'XX'     ,5     ,1    ,20110105  union all
select    3      ,333     ,'B111'      ,'X1'     ,30    ,-1    ,20110102 union all
select    4      ,333     ,'B112'      ,'X2'     ,13    ,-1    ,20110106 union all
select    5      ,333     ,'B112'      ,'X2'     ,13     ,1    ,20110109
)
sele