下面的代码在查询分析器里运行没有问题:with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select');
    SQL.Add('b.月份,');
    SQL.Add('b.编码,');
    SQL.Add('数量 =(select sum(数量) from test where 月份=b.月份');
    SQL.Add('and  编码 like b.编码+''%'')');
    SQL.Add('from');
    SQL.Add('(select 月份,left(编码,4) as 编码 from test');
    SQL.Add('union');
    SQL.Add('select 月份,left(编码,6) as 编码 from test');
    SQL.Add('union');
    SQL.Add('select 月份,编码 from test)B');
    SQL.Add('group by b.月份,b.编码');
    Open;
  end;写到Delphi中运行查询时会提示:参数 数量 没有默认值。不知道哪里错了???

解决方案 »

  1.   

    用union的话两边的数目和类型应该完全一致,仔细检查一下
      

  2.   

    先把程序中的SQL语句截出来,在数据库中看看能不能执行
      

  3.   

    数量 =(.....)应该是(.....) as 数量 吧
    select sum(IsNull(数量,0)) from test where 月份=b.月份'
      

  4.   

    同意月亮的说法
    另外,宽度的话如果没有自己设定colunm的width,是自动根据field的长度的
      

  5.   

    test表中字段的长度都是设置好的,查询后相应的字段不是也应该是同样的大小吗?为什么查询后的列的行宽会增加呢?