having ( max(帐单号)<='+edit1.text+'and min(帐单号)>='+edit2.text+' and 菜品名称 in ("燕京","低消热茶"))');
这样写,错在哪里?提示列名“燕京”,“低消热茶”无效{
select 点菜人名,菜品名称,单位,sum(数量) as 总数,max(帐单号)as 最大帐单号 from y_已结明细
   
 group by 点菜人名,菜品名称,单位 having ( max(帐单号)<='0059046'and min(帐单号)>='0057600' and 菜品名称 in ('燕京','纸巾')) order by 点菜人名 }在查询分析器中执行是正常的 请高手们指点

解决方案 »

  1.   

    在Delphi的字符串写法中,''表示为一个',所以应该这样写:
    in ('+'''燕京'''+','+'''低消热茶'''+'))');
    但是建议你还是用参数来传递的好。清晰,不容易出错。
      

  2.   

    >> and 菜品名称 in ("燕京","低消热茶")
    该条件应写在 where 中,因为having条件是用来对 count、max、sum 这样的函数进行判断。
    正确写法:
    select 点菜人名,菜品名称,单位,sum(数量) as 总数,max(帐单号)as 最大帐单号 from y_已结明细
    where 菜品名称 in ('燕京','纸巾')
     group by 点菜人名,菜品名称,单位 
    having ( max(帐单号)<='0059046'and min(帐单号)>='0057600' )
     order by 点菜人名
      

  3.   

    having ( max(帐单号)<='+edit1.text+'and min(帐单号)>='+edit2.text+' and 菜品名称 in ("燕京","低消热茶"))');
    ------------------------------------------------------------------
    如果你的‘帐单号’是整形字段,那么后面的edit1.text应该做类型转换的,如: StrToInt(edit1.text);