类型 客户简称 出货日期 金额汇整
加工订单 湖南天下 2004-9  3000
加工订单 深正黃上 2004-9  8000
收款单 湖南天下 2004-9  1128
收款单 湖南信息 2004-10 10100
收款单 湖南信息 2004-11 200
收款单 深圳天经 2004-10 300
收款单 深正黃上 2004-9  1600
销货退回 湖南天下 2004-9  1400
销货退回 深正黃上 2004-9  12000
这样一个数据。我想对这三个数据进行加减也就是说。相同月份+相同公司汇总。欠款=加工订单的金额-收款单-销货退回   这样的SQL要怎么样写。谢谢了

解决方案 »

  1.   

    select 客户简称,出货日期
    ,sum(case when 类型='加工订单' then 金额汇整 else 0 end)
    -sum(case when 类型='收款单' then 金额汇整 else 0 end)
    -sum(case when 类型='销货退回' then 金额汇整 else 0 end) as 欠款
    from yourtable
    group by  客户简称,出货日期
      

  2.   

    在sqlserver中可以这样
    select SUM(case 类型 when '加工订单' then 金额汇整 else -金额汇整 end),客户简称,出货日期 from T group by 客户简称,出货日期
      

  3.   

    SELECT a.客户简称,a.出货日期,
    ((SELECT SUM(金额汇整) from tablename WHERE 出货日期=a.出货日期 AND 类型='加工订单')
    -(SELECT SUM(金额汇整) from tablename WHERE 出货日期=a.出货日期 AND 类型='收款单')
    -(SELECT SUM(金额汇整) from tablename WHERE 出货日期=a.出货日期 AND 类型='销货退回')) 
    AS 欠款
    FROM tablename a GROUP BY a.客户简称
      

  4.   

    select SUM(case 类型 when '加工订单' then 金额汇整 else -金额汇整 end),客户简称,出货日期 from T group by 客户简称,出货日期
    继续学习