1.declare @a int,@b int
set @a=0
set @b=5
select case when @a=1 then (case when @b=1 then 'A' else 'B' end) else (case when @b=1 then 'C' else 'D' end) end
D2.
declare @a int,@b int
set @a=1
set @b=1
select case when @a=1 then (case when @b=1 then 'A' else 'B' end) else (case when @b=1 then 'C' else 'D' end) endA

解决方案 »

  1.   

    可以:
    select case a 
        when 1 then
          case b
             when 'a' then '1a'
             when 'b' then '1b'
             when 'c' then '1c'
             else '1e'
          end
        when 2 then
          case b
             when 'a' then '2a'
             when 'b' then '2b'
             when 'c' then '2c'
             else '2e'
          end
        else '0e'
      end as ab
    from tablename
      

  2.   

    谢谢你的答复,
    可是如是有子CASe中有两个以上的选项时,又怎么做呢?
     如:
       declare @a int,@b int
    set @a=0
    set @b=5
    select case when @a=1 then 
                     (case when @b=1 then 'A' else 'B' end) ,
                     (case when @b=2 then 'F' else 'B' end)
                else (case when @b=3 then 'C' else 'D' end)
                     (case when @b=4 then 'G' else 'D' end)
                    end
      

  3.   

    declare @a int,@b int
    set @a=0
    set @b=5
    select (case  @a
    when '1' then 
                     (case @b
    when '1' then 'A'
                    when '2' then 'F'
    else 'B'
    end)
             when '2' then
      (case @b
    when '3 'then 'C'
                    when '4' then 'G' 
    else 'D'
     end)
              end)
      

  4.   

    我的原先的语句是这样的,
     select id, case when bc='A' 
                          min(case when name ='a' then '123 else null end ) as t1 ,
                          min(case when name ='b' then '123 else null end ) as t1 ,   
                           min(case when name ='c' then '123 else null end ) as t1 
                      when bc='B' 
                          min(case when name ='a' then '123 else null end ) as t1 ,
                          min(case when name ='b' then '123 else null end ) as t1 ,   
                           min(case when name ='c' then '123 else null end ) as t1 
                       else 
                          
                       end 
    可是总提示AS 附近有错误.
      

  5.   

    我的原先的语句是这样的,
     select id, case when bc='A' 
                          min(case when name ='a' then '123' else null end ) as t1 ,
                          min(case when name ='b' then '456' else null end ) as t2 ,   
                          min(case when name ='c' then '789' else null end ) as t3 
                      when bc='B' 
                          min(case when name ='a' then '012' else null end ) as t1 ,
                          min(case when name ='b' then '023' else null end ) as t2 ,   
                          min(case when name ='c' then '036' else null end ) as t3 
                       else 
                          
                       end
     from ta group by id 
    可是总提示AS 附近有错误.