下面两条语句,要并列.条件比较多
select contno=contno ,
qua=case vo_c_d when 'd'then amount else -amount end ,
cost=case vo_c_d when 'd'then vo_sum else -vo_sum end 
Where item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%'select fee=case vo_c_d when 'd' then fee else -fee end,
insurance=case vo_c_d when 'd' then insurance else -insurance end
where item_cd like 'BBB%'  and jsign='ZZZ'

解决方案 »

  1.   

    就是两个select语句中的选择列要并到一个结果集里面
      

  2.   

    不好意思,漏写了fromselect contno=contno ,
    qua=case vo_c_d when 'd'then amount else -amount end ,
    cost=case vo_c_d when 'd'then vo_sum else -vo_sum end 
    from table1
    Where item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%'select fee=case vo_c_d when 'd' then fee else -fee end,
    insurance=case vo_c_d when 'd' then insurance else -insurance end
    from table1
    where item_cd like 'BBB%'  and jsign='ZZZ'
      

  3.   

    select *
    from
    (
    select contno=contno ,
    qua=case vo_c_d when 'd'then amount else -amount end ,
    cost=case vo_c_d when 'd'then vo_sum else -vo_sum end 
    from table1
    Where item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%'
    )a
    inner join
    (
    select
    contno=contno ,
    fee=case vo_c_d when 'd' then fee else -fee end,
    insurance=case vo_c_d when 'd' then insurance else -insurance end
    from table1
    where item_cd like 'BBB%'  and jsign='ZZZ'
    )b
    on a.contno =b.contno --try
      

  4.   

    to :LouisXIV(夜游神) ( ) 信誉:100   按你的方法,好像可以了哈
      

  5.   

    这样?
    select contno=contno,
    qua=  
    case
      when (item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%')
      then amount 
      else -amount 
    end,
    cost=
    case
      when (item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%')
      then vo_sum 
      else -vo_sum 
    end,
    fee=
    case
      when (item_cd like 'BBB%'  and jsign='ZZZ') 
      then fee 
      else -fee
    end,
    insurance=
    case
      when (item_cd like 'BBB%'  and jsign='ZZZ') 
      then insurance 
      else -insurance 
    end
    from tab
    where vo_c_d = 'd'
      

  6.   

    to:hellowork() ( ) 信誉:100  这样是不是会漏掉一些行
      

  7.   

    或漏掉行的,没注意这个:select contno=contno,该列是不需要vo_c_d = 'd'这个条件的.修改如下:
    select contno=contno,
    qua=  
    case
      when (item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%') and vo_c_d = 'd'
      then amount 
      else -amount 
    end,
    cost=
    case
      when (item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%') and vo_c_d = 'd'
      then vo_sum 
      else -vo_sum 
    end,
    fee=
    case
      when (item_cd like 'BBB%'  and jsign='ZZZ') and vo_c_d = 'd'
      then fee 
      else -fee
    end,
    insurance=
    case
      when (item_cd like 'BBB%'  and jsign='ZZZ')  and vo_c_d = 'd'
      then insurance 
      else -insurance 
    end
    from tab
    ----我开始是这么写的,后来"灵机一动"发现可以把vo_c_d = 'd'共用,却没注意到contno=contno是不需要vo_c_d = 'd'这个条件的.
      

  8.   

    补充:必须加where限定一下,不然不是漏行,而是多行了.
    在上面的语句中加上
    where 
    (item_cd like 'AAA%'  and jsign<>'AAA1'  And ltrim(contno)<>'AAA2' and dcode like 'AAA3%')
    or 
    (item_cd like 'BBB%'  and jsign='ZZZ')