INSERT INTO t_Tmp_CallByServiceManual(
   SID,                       
   STime,                               
   CallFailNum
)
SELECT
  SerialNo,
  STValue,
  NVL(SUM(OccupyNum)-SUM(CallSuccessNum)-sum(NoAckNum), 0)
FROM t_DayLog_CallByService a
WHERE (DeviceType = 1 or DeviceType =2)
AND d.ID <> 01、最后一句AND d.ID <> 0 中跑出个d.ID,可存储里面没有定义d别名,d.ID代表什么?
2、还有就是SerialNo,STValue,这两个字段在数据库t_DayLog_CallByService是不存在的,他们代表什么?
3、语句中使用了sum怎么不用group by?
这条存储是没有问题的,帮我解答下这三个问题

解决方案 »

  1.   

    语句不全,找出什么地方使用这条语句的,结合上下文来分析
    1、最后一句AND d.ID <> 0 中跑出个d.ID,可存储里面没有定义d别名,d.ID代表什么?
    -----
    这条语句在使用时是否经过拆分或拼接2、还有就是SerialNo,STValue,这两个字段在数据库t_DayLog_CallByService是不存在的,他们代表什么?
    --------
    SerialNo,STValue可能是其他表的列名或变量3、语句中使用了sum怎么不用group by?
    -------
    group by可能在其他的拼接串中
      

  2.   

    3、语句中使用了sum怎么不用group by?
    -------------------------------------------------------------------------------------
    如果前两个字段是变量,则SQL语句不需要分组,自然不需要group by
      

  3.   

    waterfirer(水清) ( ) 说的是对的
      

  4.   

    大哥,如果这是个直接执行的sql语句,肯定是错误的。
    不会是存储过程等中间的一句话罢,如果是,需要做上下文分析的