客户号 业务标志 交易方向 证券代码 成交数量 成交价格 成交金额 证券余额 资金余额 佣金 印花税 过户费 交易日期 交易时间
1800002831 4002 1 600132 10000 17.54 175400 10000 307635.12 263.1 0 10 20090213 173515
1800002831 4002 1 600132 7800 17.23 134394 17800 173031.73 201.59 0 7.8 20090216 174920
1800002831 4001 2 600132 -17800 17.9 318620 0 490837.38 477.93 318.62 17.8 20090219 172513
1800002831 4002 1 000973 40000 5.546 221826 40000 268678.64 332.74 0 0 20090224 175601
1800002831 4002 1 000973 10000 5.43 54300 50000 214297.19 81.45 0 0 20090224 175601
1800002831 4002 1 000973 10000 5.359 53590.92 60000 160625.88 80.39 0 0 20090224 175601
1800002831 4001 2 000973 -23400 4.31 100854 36600 261227.75 151.28 100.85 0 20090309 175006
1800002831 4001 2 000973 -36600 4.305 157573 0 418406.81 236.36 157.58 0 20090309 175006
要求:
根据不同的证券代码,根据业务标志如果是4002,那就是(成交价格*成交数量+佣金+印花税+过户费);如果是4001,也是(成交价格*成交数量-佣金-印花税-过户费),最后用算出的4001总和减去4002总和

解决方案 »

  1.   

    select 证券代码
    ,sum(case when 业务标志=4002 then 成交价格*成交数量+佣金+印花税+过户费 when 业务标志=4001 then 成交价格*成交数量-佣金-印花税-过户费 end) as [...]
    from tab
    group by 证券代码
      

  2.   

    有点搞错select 证券代码
    ,sum(case when 业务标志=4002 then -(成交价格*成交数量+佣金+印花税+过户费) when 业务标志=4001 then 成交价格*成交数量-佣金-印花税-过户费 end) as [...]
    from tab
    group by 证券代码
      

  3.   

    select sum4001-sum4002 from
    (select sum(成交价格*成交数量+佣金+印花税+过户费) as sum4002 from tab where 业务标志=4002) a,
    (select sum(成交价格*成交数量-佣金-印花税-过户费) as sum4001 from tab where 业务标志=4001) b
      

  4.   

    不好意思,是我搞错了,当4001的时候成交数量需要abs的。上面2、3楼的完全正确