建议还是分三次查吧,不然就写成:select @a=(select pi_gram from b_Papertype_Item where pi_type='3101')
    , @b=(select pi_gram from b_Papertype_Item where pi_type='3120')
    , @c=(select pi_gram from b_Papertype_Item where pi_type='3130')

解决方案 »

  1.   

    select
    @a=max(case when pi_type='3101' then pi_gram end),
    @b=max(case when pi_type='3120' then pi_gram end),
    @c=max(case when pi_type='3130' then pi_gram end)
    from 
     b_Papertype_Item
      

  2.   

    select @a=(case when pi_type='3101' then pi_gram else @a end),
    @b=(case when pi_type='3120' then pi_gram else @b end),
    @c=(case when pi_type='3130' then pi_gram else @c end) from b_Papertype_Item
      

  3.   

    select 
    @a  = case when pi_type='3101'  then pi_gram else @a end
    ,@b  = case when pi_type='3120'  then pi_gram else @b end
    ,@c  = case when pi_type='3130'  then pi_gram else @c end
    from b_Papertype_Item
      

  4.   

    --try
    select @a=case pi_type when '3101'  then  pi_gram end, 
              @b=case pi_type when '3120'  then  pi_gram end    ,   
             @c=case pi_type when '3130'   then  pi_gram end      
     from b_Papertype_Item
      

  5.   

    怎么都不会简洁的,最简单就是用case when做行列转换了。
      

  6.   

    select  @a=max(case when pi_type='3101' then pi_gram end), @b=max(case when pi_type='3120' then pi_gram end), @c=max(case when pi_type='3130' then pi_gram end) from b_Papertype_Item
    where pi_gram in(3101,3120,3130)
      

  7.   

    谢了各位,用case觉得还不如查三次,结贴!