我的表是这样的:
物品  操作  数量
----------------
A     收取  3
B     退还  2
D     收取  1
A     退还  1
B     退还  3
C     收取  4
我想得到的汇总结果是这样的:
物品  净收取数
----------------
A     2
B     -5
C     4
D     1其中“净收取数”是表中的 收取-退还 数量,我应该怎么写啊?多谢多谢

解决方案 »

  1.   


    不知道你用的什么数据库select 物品,sum((case when 操作='退还' then 0-数量 else 数量 end)) 净收取数 from 
    表 group by 物品
      

  2.   


    SELECT 物品, 
    ISNULL((SELECT SUM(数量) FROM 表 T2 WHERE T2.物品 = T1.物品 AND T2.操作 = '收取'), 0) - 
    ISNULL((SELECT SUM(数量) FROM 表 T2 WHERE T2.物品 = T1.物品 AND T2.操作 = '退还'), 0) AS 净收取数
    FROM 表 T1
    GROUP BY 物品
      

  3.   

    select
          物品,
          sum(case when 操作='退还' then -数量 else 数量 end) 净收取数 
    from 
          t
    group by 物品
      

  4.   

    select 物品,sum((case when 操作='退还' then 数量 * -1 else 数量 end)) 净收取数 
    from 表 
    group by 物品
      

  5.   

    select a,sum((case when b='退还' then 0-c else c end)) 净收 from 
    t1 group by a