select 托盘编号,零件图号,操作人,收货批次,生产批次,期初数量,期末数量,出入数量,日期
from (select dt 日期, 托盘编号,操作人,零件图号,收货批次,生产批次,lag(sumqty,1) over(order by dt) 期初数量,
sumqty +lag(sumqty,1,0) over(order by dt) 期末数量,
(lag(sumqty,1) over(order by dt))-(sumqty +lag(sumqty,1,0) over(order by dt)) 出入数量
from (select to_char(operat_date,'yyyy-mm-dd') dt,sum(decode(operat_type,'入库',qty,'出库',-qty)) sumqty,
pallet_code 托盘编号 ,material_code 零件图号,OPERAT_MAN 操作人,max(RECEVIE_BATCH_CODE) 收货批次,max(MADE_BATCH_CODE)生产批次
from wms_u_merge_pallet_record group by pallet_code,material_code,OPERAT_MAN,to_char(operat_date,'yyyy-mm-dd')))
where  日期 between '2010-11-25' and '2010-11-25' 在delphi6中执行这条语句报错消息为  :   ORA-00979 不是GROUP BY 表达式急...求解

解决方案 »

  1.   

    先在数据库里面跑一下吧,group by 用法。
      

  2.   

    我在pl/sql里面不报错阿
    能正确执行查询出结果.
      

  3.   

     S:='select 托盘编号,零件图号,操作人,收货批次,生产批次,期初数量,期末数量,出入数量,日期';
            S:= S + ' from (select 托盘编号,操作人,零件图号,收货批次,生产批次,';
            S:= S + 'lag(sumqty,1) over(order by dt) 期初数量,sumqty +lag(sumqty,1,0) over(order by dt) 期末数量,';
            S:= S + '(lag(sumqty,1) over(order by dt))-(sumqty +lag(sumqty,1,0) over(order by dt)) 出入数量, dt 日期';
            S:= S + ' from (select to_char(operat_date,''yyyy-MM-dd'') dt,sum(decode(operat_type,''入库'',qty,''出库'',-qty)) sumqty,';
            S:= S + 'pallet_code 托盘编号,material_code 零件图号,OPERAT_MAN 操作人,max(RECEVIE_BATCH_CODE) 收货批次,max(MADE_BATCH_CODE) 生产批次';
            S:= S + ' from wms_u_merge_pallet_record group by pallet_code,material_code,OPERAT_MAN,to_char(operat_date,''yyyy-mm-dd'')))';
            S:= S + ' where  日期 between ''' + FormatDateTime('yyyy-MM-dd',dtpStartTime.Date)+'''';
            S:= S + ' and '''+FormatDateTime('yyyy-MM-dd',dtpEndTime.Date)+'''';
            if LengTh(txtPalletNO.Text)>0 Then
            S:= S + ' and 托盘编号 like ''' + Trim(txtPalletNO.Text)+'%''';
            if LengTh(txtPartsNO.Text)>0 Then
            S:= S + ' and material_code like ''' + Trim(txtPartsNO.Text)+'%''';
            if (LengTh(txtOperator.Text)>0) and (Trim(FormLogin.Edit1.Text)='SUPERVISOR') Then
            S:= S + ' and OPERAT_MAN=''' + Trim(txtOperator.Text)+'''';
            if not (Trim(FormLogin.Edit1.Text)='SUPERVISOR') Then
            S:=S+' and OPERAT_MAN =''' + Trim(FormLogin.Edit1.Text) + '''';
            Query1.DisableControls;
            Query1.Close;
            Query1.SQL.Clear;
            Query1.SQL.Add(S);
            Query1.Open;
            Query1.EnableControls;
      

  4.   

    这样我查出来的语句跟我在pl/sql的一样阿.
    可为什么在delphi上就不行了呢..大家快快帮帮忙
      

  5.   

    delphi点选那个能提取出我的sql