"select mat.material_no,mat.material_name_eng,mat.spec1,mat.spec2,
          mat.spec3,mat.spec4,mat.spec5,mat.spec6,mat.spec7, mat.spec8,mat.latest_update 
from material mat 
inner join inv_bal inv on mat.material_no=inv.material_no
where mat.material_no like '1%' and mat.latest_update > '2010-01-01' 
          and mat.user_in_charge <> '780' and mat.user_in_charge <>'239' "
    如果用DISTINCT刪除material_no的重複項?

解决方案 »

  1.   

    select distinct mat.material_no,mat.material_name_eng,mat.spec1,mat.spec2,
      mat.spec3,mat.spec4,mat.spec5,mat.spec6,mat.spec7, mat.spec8,mat.latest_update  
    from material mat  
    inner join inv_bal inv on mat.material_no=inv.material_no
    where mat.material_no like '1%' and mat.latest_update > '2010-01-01'  
      and mat.user_in_charge <> '780' and mat.user_in_charge <>'239' 
      

  2.   

    Msg 421, Level 16, State 1, Line 1
    The text data type cannot be selected as DISTINCT because it is not comparable.
      

  3.   

    DISTINCT刪除material_no的重複項,你只是想刪除material_no的重複項?还有你检查出来的结果用这DISTINCT也没用,它是删除重复数据,不会是单独一个column的,你用你的查询语句作为一个临时表,然后再用相应的条件过滤就可以了,还有你的问题太笼统,只能给你这点意见
      

  4.   

    select mat.material_no,mat.material_name_eng,mat.spec1,mat.spec2,
      mat.spec3,mat.spec4,mat.spec5,mat.spec6,mat.spec7, mat.spec8,mat.latest_update  
    from material mat  
    inner join inv_bal inv on mat.material_no=inv.material_no
    where mat.material_no like '1%' and mat.latest_update > '2010-01-01'  
      and mat.user_in_charge <> '780' and mat.user_in_charge <>'239' 
    and not exists(select 1 from material where material_no=mat.material_no and latest_update>mat.latest_update)
      

  5.   

    select distinct mat.material_no,mat.material_name_eng,mat.spec1,mat.spec2,
              mat.spec3,mat.spec4,mat.spec5,mat.spec6,mat.spec7, mat.spec8,mat.latest_update 
    from material mat 
    left join inv_bal inv on mat.material_no=inv.material_no
    where mat.material_no like '1%' and mat.latest_update > '2010-01-01' 
              and mat.user_in_charge <> '780' and mat.user_in_charge <>'239' 執行結果:Msg 421, Level 16, State 1, Line 1
    The text data type cannot be selected as DISTINCT because it is not comparable.
      

  6.   

    sql2000 时看一下是否有一列的类型为text,如果字符不要8000字符时,可 cast(text列 as varchar(8000))
    Sql2005以上版本转为cast(text列 as varchar(max))如:
    DECLARE @t TABLE(Col TEXT)
    INSERT @t SELECT 'aa' SELECT DISTINCT CAST(col AS VARCHAR(max)) FROM @t