select name,
       clientid,
       fy00*x as fy00,
       fy01*x as fy01,
       ...
       fy20*x as fy20
from table1 a join 
     (  select [name],
               (case when len(clientid)>10 then -1 else 1 end) as X
        from table1
      ) b
      on a.name=b.name

解决方案 »

  1.   

    把中海的稍改一下:
    select name,
           clientid,
           fy00*x as fy00,
           fy01*x as fy01,
           ...
           fy20*x as fy20
    from (  select *,
                   (case when len(clientid)>10 then -1 else 1 end) as X
            from table1
          ) b
          on a.name=b.name
      

  2.   

    select name,clientid
      ,fy00=case when len(clientid)>10 then -fy00 else fy00 end
      ,fy01=case when len(clientid)>10 then -fy01 else fy01 end
    ...
      ,fy19=case when len(clientid)>10 then -fy19 else fy19 end
      ,fy20=case when len(clientid)>10 then -fy20 else fy20 end
    from table1
      

  3.   

    把马可的稍改一下:
    select name,
           clientid,
           fy00*x as fy00,
           fy01*x as fy01,
           ...
           fy20*x as fy20
    from (  select *,
                   (case when len(clientid)>10 then -1 else 1 end) as X
            from table1
          ) a