我的Tj_FeeMsgPermon  表中有areaname ,pathname ,path ,msgnum,countmonth,note
我在jxtsms.dbo.Sms_WaitSendLog20080503bak 表中指能选出areaname ,pathname ,path ,msgnum,其他的两个个countmonth 我希望能传一个@seldate,note 默认为null 我应该怎么做

解决方案 »

  1.   

    首先,你的Tj_FeeMsgPermon 有6列,但是你插入只有 b.areaname,c.pathname, a.path,count(*)   四列,第二个错误是这样被抛出来的;
    其次,你group by语句后有个列a.sysflag,没有在select里面出现,第一个错误被抛出。
    另,你group by后加null排序,没有意义
      

  2.   

    我现在的问题就是怎么将另外两列也插进去,这两列 jxtsms.dbo.Sms_WaitSendLog20080503bak 是去不出来的,是我自定义插进去的,我应该怎么做
      

  3.   

    补够列数就行了
    insert Tj_FeeMsgPermon  
    select  b.areaname,c.pathname, a.path,count(*),'0',''   
    from jxtsms.dbo.Sms_WaitSendLog20080503bak a,jxt_area b,dbo.msg_path c 
      

  4.   

    当我执行这段代码的时候会出现 
    消息 164,级别 15,状态 1,第 1 行 
    每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。 
    答:group by 后不能有null消息 213,级别 16,状态 1,第 1 行 
    插入错误: 列名或所提供值的数目与表定义不匹配。 
    请问这个该怎么解决。
    答:b.areaname,c.pathname, a.path,count(*) 4个字段的类型与数目必须与表 tj_feemsgpermon的字段数与类型相同
      

  5.   

    insert Tj_FeeMsgPermon  
    select  b.areaname,c.pathname, a.path,count(*)   
    from jxtsms.dbo.Sms_WaitSendLog20080503bak a,jxt_area b,dbo.msg_path c 
    where a.path in('71','72','74','75','36','39') 
    and left(a.sysflag,4) in('1102','1103','1104','1105','1106','1107','1201','1202') and left(a.sysflag,4)=b.areaid and a.path=c.path 
    group by a.path,left(a.sysflag,4),b.areaname,c.pathname
      

  6.   

    insert Tj_FeeMsgPermon  
    select  b.areaname,c.pathname, a.path,count(*)   
    from jxtsms.dbo.Sms_WaitSendLog20080503bak a,jxt_area b,dbo.msg_path c 
    where a.path in('71','72','74','75','36','39') 
    and left(a.sysflag,4) in('1102','1103','1104','1105','1106','1107','1201','1202') and left(a.sysflag,4)=b.areaid and a.path=c.path 
    group by a.path,left(a.sysflag,4),b.areaname,c.pathname