名称  id2  toid2  数量
---------------------
01    A     B     10
02    C     A     29
02    B     C      9
02    A     B      5
环境是ACCESS+VB
A,B,C代表地点,01,02表示物品。第一条记录的意思是01物品由A点发给B点。现在要得到2张表。一张表是单个地方各种物品的存量:比如求A点的存量
名称  数量
----------
01     -10
02      24另一张表就是每个物品每个地点的存量
名称    A      B     C
------------------------
01     -10    10      0
02      24    -4    -20后名的问题可能要用到交叉表,我一边自己尝试,一边等待他人指点.

解决方案 »

  1.   

    表一:考虑临时表,insert into 临时表 select 名称,数量*-1 from 表 where id2='A'
    select 名称,数量 from 表 where toid2='A'最后就 select 名称,sum(数量) from 临时表 group by 名称
      

  2.   

    一个高手写的SQ,但不是ACCESS格式的。可是他又不会ACCESS!!orz
    select 名称,
    isnull(sum(case when id2='A' then (-1)*数量 else case when toid2='A' then 数量 end end),0) as A,
    isnull(sum(case when id2='B' then (-1)*数量 else case when toid2='B' then 数量 end end),0) as B,
    isnull(sum(case when id2='C' then (-1)*数量 else case when toid2='C' then 数量 end end),0) as C
    from tab1  group by 名称
      

  3.   

    以上问题已经解决
    sum(Switch(id2=A,(-1)*数量,toid2=A,数量)) AS A还想求一张表
    求各个点存量的总和!!
    名称   现存数
    ------------------------
    01       0
    02       0