不会吧,这可是标准的sql啊。看看连接的数据库是不是一样呢?另外,还是把错误贴出来吧

解决方案 »

  1.   

    SELECT DISTINCT p.ContractID,ch.CompanyID,e.EmployeeID,e.FirstName,e.MiddleInitial,e.LastName,e.SSN,c.FederalTaxID,
                         CONVERT(VARCHAR(10),BeginLastDate.BeginDate,101) AS BeginDate,CONVERT(VARCHAR(10),BeginLastDate.LastDate,101) AS LastDate,CONVERT(VARCHAR(10),ch.EndDate,101) as EndDate
    FROM CprWeekly cw
    INNER JOIN CprHeader ch ON cw.CprHeaderID = ch.CprHeaderID
    ...ORDER BY e.FirstName,e.LastName,ch.EndDate这个地方ch.如果不去掉,在我机器上是对的,在server是出错。错误消息:
     ORDER BY items must appear in the select list if SELECT DISTINCT is specified. 
      

  2.   

    错误提示翻译过来是:如果distinct使用的话,排序的字段必须出现在select列表中是语句的语法问题,我觉得和配置没有什么太大的关系。详细比较下两个sql语句是否一样,例如是不是都使用了distinct选项
      

  3.   

    SQL当然是一样的,出现这样的问题不是一次两次了。
      

  4.   

    就是还有其它的情况,也是同样的SQL语句,我们这里测试完全通过,到那里出错了。
    服务器是windows 2003,我是windows xp.
      

  5.   

    你这种属于特殊的情况,不要担心数据库配置的问题
    首先同时select distinct语句和order by语句的时候要求:order by子句出现的字段必须在select子句中出现
    而在你的sql语句中,你的sql语句并没有ch.EndDate字段,而是将它重命名为:EndDate
    如果你将ch.去除就不会出现这个问题。
    个人建议对于这种情况order by子句不要使用『表名.字段名』的格式,直接用字段名称就可以
    (如果重命名了就用已重命名的名称)