accname                        amount
------------------------------ ----------------------
wlzf2                          -1011
成都花花凉菜公司                -421
五粮液股份有限公司             -999
lwzf1                          24
wlzf2                          900
成都花花凉菜公司               22
五粮液股份有限公司              888实际值是这个样子的
但是我需要的是-------------------------
accname            正         付 
wlzf2             900       -1011
成都花花凉菜公司   22         -421
五粮液股份有限公司 888         -999
lwzf1              24           0或者null
    

解决方案 »

  1.   

    select accname , 
           max((case when amount > 0 then amount end)) 正 ,
           max((case when amount <= 0 then amount end)) 负
    from tb
    group by accname
      

  2.   

    create table tb(accname  varchar(50),amount int)
    insert into tb values('wlzf2'            ,              -1011)
    insert into tb values('成都花花凉菜公司'  ,              -421)
    insert into tb values('五粮液股份有限公司',             -999)
    insert into tb values('lwzf1'            ,              24)
    insert into tb values('wlzf2'            ,             900)
    insert into tb values('成都花花凉菜公司'  ,            22)
    insert into tb values('五粮液股份有限公司',              888)
    goselect accname , 
           sum((case when amount > 0 then amount else 0 end)) 正 ,
           sum((case when amount <= 0 then amount else 0 end)) 负
    from tb
    group by accnamedrop table tb/*
    accname                                            正           负           
    -------------------------------------------------- ----------- ----------- 
    lwzf1                                              24          0
    wlzf2                                              900         -1011
    成都花花凉菜公司                                           22          -421
    五粮液股份有限公司                                          888         -999(所影响的行数为 4 行)
    */
      

  3.   

    create table tb(accname nvarchar(30), amount int)
    ------------------------------ ----------------------
    insert into tb select 'wlzf2',                          -1011
    insert into tb select '成都花花凉菜公司',                -421
    insert into tb select '五粮液股份有限公司',             -999
    insert into tb select 'lwzf1',                          24
    insert into tb select 'wlzf2',                          900
    insert into tb select '成都花花凉菜公司',               22
    insert into tb select '五粮液股份有限公司',              888
    go
    select accname,
    sum(case when amount>=0 then amount else 0 end)正,
    sum(case when amount<0 then amount else 0 end)负
    from tb group by accname
    /*
    accname                        正           负
    ------------------------------ ----------- -----------
    lwzf1                          24          0
    wlzf2                          900         -1011
    成都花花凉菜公司                       22          -421
    五粮液股份有限公司                      888         -999(4 行受影响)*/
    go
    drop table tb