我在执行
Data_win.ADOQ_cfcx.SQL.Add('select a.cfdh,a.cf_date,a.hzxm,a.xb,a.age,a.bz,a.zz,b.xm,(case a.biaozhi when 0 then ''未登记'' when 1 then ''己登记'' end) as biaozhi,a.uid,d.mz from cfd a ');
  Data_win.ADOQ_cfcx.SQL.Add('inner join ryxx b on a.doct=b.gh');
  Data_win.ADOQ_cfdy.SQL.Add('inner join bmxx d on a.uid=d.id');
  Data_win.ADOQ_cfcx.SQL.Add('group by a.cfdh,a.cf_date,a.hzxm,a.xb,a.age,a.bz,a.zz,b.xm, biaozhi,a.uid,d.mz');
  Data_win.ADOQ_cfcx.Open;
  Data_win.ADOQ_cfcx.Active:=true;时出现
无法邦定由多个部分组成的标识符“d.mz”错误提示。
可在SQLSERVER2005可执行这个查询语句是没问题的。这到底是什么原因?

解决方案 »

  1.   

    我在 2012里面调试了下,  你SQL语句应该是没错的.不过, 这个语句, 为啥要这么分组呢?  如果只是为了去重, 不是有  distinct   嘛?你这个语句中, 又没有聚合函数, 所以这个分组貌似可以不要, 直接用 distinct 去重就好了額.Data_win.ADOQ_cfcx.SQL.Add('select  distinct  a.cfdh,a.cf_date,a.hzxm,a.xb,a.age,a.bz,a.zz,b.xm,(case a.biaozhi when 0 then ''未登记'' when 1 then ''己登记'' end) as biaozhi,a.uid,d.mz from cfd a ');
      Data_win.ADOQ_cfcx.SQL.Add('inner join ryxx b on a.doct=b.gh');
      Data_win.ADOQ_cfdy.SQL.Add('inner join bmxx d on a.uid=d.id');
      Data_win.ADOQ_cfcx.Open;
      Data_win.ADOQ_cfcx.Active:=true;