有一个表:名字叫Phones(PhoneNumber, FileName)
我想统计表中PhoneNumber的重复次数,写得SQL:SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total, FileName from Phones where FileName = ''' + FileName +  ''' group by PhoneNumber having count(PhoneNumber) > 1';ADOQuery.SQL.Add(SQLStr);
ADOQuery.Open;执行的时候总是报错:试图执行的查询中不包含作为合计函数一部分的特定表达式'FileName'。请问这是怎么回事?
是我的SQL语句写错了??

解决方案 »

  1.   

    你的SQL是错了, 去掉SQL中的FileName 就能通过
      

  2.   

    SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total, FileName 
    from Phones where FileName = ''' + FileName +  ''' 
    group by PhoneNumber,FileName
    having count(PhoneNumber) > 1';
      

  3.   

    SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total
    from Phones where FileName = ''' + FileName +  ''' 
    group by PhoneNumber
    having count(PhoneNumber) > 1';
      

  4.   

    SQLStr := 'select PhoneNumber, count(PhoneNumber) as Total, FileName 
    from Phones where FileName = ''' + FileName +  ''' 
    group by PhoneNumber,FileName
    having count(PhoneNumber) > 1';
      

  5.   

    group by PhoneNumber,FileName 这样也可以
      

  6.   

    楼主的SQL 不符合分组的规则;
    如果你分组,你查询的字段如果不是函数(如min(),max())那必须出现在Group by 里面.