代码之家  ›  专栏  ›  技术社区  ›  Mike Sickler

如何将正数和负数分开到各自的列中?

  •  19
  • Mike Sickler  · 技术社区  · 16 年前

    我有一个包含以下列和数据的表:

    activity_dt | activity_amt
     2009-01-01 |   -500
     2009-01-01 |    750
    

    我可以写一个查询来查看 activity_amt

    activity_dt | debits | credits
     2009-01-01 |  -500  |   750
    
    4 回复  |  直到 10 年前
        1
  •  38
  •   Floern themue    10 年前
    select activity_dt, 
        sum(case when activity_amt < 0 then activity_amt else 0 end) as debits, 
        sum(case when activity_amt > 0 then activity_amt else 0 end) as credits
    from the_table
    group by activity_dt
    order by activity_dt
    
        2
  •  5
  •   Guffa    16 年前

    我不确定Sybase中的确切语法,但您应该能够对日期进行分组,并总结正负值:

    select
      activity_dt,
      sum(case when activity_amt < 0 then activity_amt else 0 end) as debits,
      sum(case when activity_amt >= 0 then activity_amt else 0 end) as credits
    from
      theTable
    group by
      activity_dt
    
        3
  •  0
  •   eggyal    13 年前

    我使用 DECODE 我希望这对每个人都有用。

    select activity_dt, 
    sum((DECODE(activity_amt /-ABS(activity_amt), 1, activity_amt, 0))) as credits,
    sum((DECODE(activity_amt /-ABS(activity_amt), -1, activity_amt, 0))) as debits
    from the_table
    group by activity_dt
    order by activity_dt;
    
        4
  •  0
  •   Igor Borisenko    11 年前
    select (select JV_GroupsHead.GroupTitle
             from JV_GroupsHead
             whereJV_GroupsHead.Id=jv.GroupId) as 'GroupName'
            ,jv.Revenue
            ,jv.AccountNo
            ,jv.AccountNoTitle
            ,(case when jv.Revenue  < 0 then jv.Revenue  else 0 end) as 'debits'
            ,(case when jv.Revenue> 0 then jv.Revenue  else 0 end) as 'credits'
    from JVFunction1('2010-07-08','2010-08-08') as jv
    
    推荐文章