提示 無效的資料行名稱 'RowNum'。 RowNum要怎样定?
 Dim strSQL2 As New StringBuilder("select a.rec_id,a.appro_status,a.cls_num,a.emp_id,a.taken_hr,a.exam_result,a.finasst_per,a.finasst_amt,a.finasst_apr_date,a.finasst_act_date,a.appro_status,a.crt_datetime,a.chg_datetime,ROW_NUMBER() OVER(ORDER BY a.rec_id ASC) RowNum,")
                strSQL2.Append("b.dept_nam as dept_num,c.fac_num as fac_num,d.crs_nam as crs_num,e.user_nam as chg_user,f.user_nam as crt_user,g.code_value as grade_id,h.title_nam as title_id,i.code_value as atn_status,j.code_value as lev_status,k.emp_chn_nam  from TRAIN_REC a  ")
                strSQL2.Append("left join dept b on  a.dept_num=b.dept_num and a.fac_num=b.fac_num left join facility c on a.fac_num=c.fac_num   left join course d on a.crs_num=d.crs_num  left join user_id e on a.chg_user=e.user_id left join user_id f on a.crt_user=f.user_id  ")
                strSQL2.Append(" left join CodeTable g on a.grade_id=g.code_id and g.table_id='Grade' left join title h on a.title_id=h.title_id and h.fac_num=a.fac_num left join CodeTable i on a.atn_status=i.code_id and i.table_id='CrsStatus' ")
                strSQL2.Append(" left join CodeTable j on a.lev_status=j.code_id and j.table_id='AppStatus' left join employee k on a.emp_id=k.emp_id   where RowNum between 1 and 15 ")

解决方案 »

  1.   

    ROW_NUMBER() OVER(ORDER BY a.rec_id ASC)  as a.RowNum, 这样也不行
      

  2.   

    where a.RowNum between 1 and 15
    也不行
      

  3.   

     精简一下
    Dim strSQL2 As New StringBuilder("select a.*,ROW_NUMBER() OVER(ORDER BY a.rec_id ASC)  as a.RowNum,")
     strSQL2.Append(" left join CodeTable j on a.lev_status=j.code_id and j.table_id='AppStatus'   where a.RowNum between 1 and 15 ")
      

  4.   

    Dim strSQL2 As New StringBuilder("select a.*,ROW_NUMBER() OVER(ORDER BY a.rec_id ASC)  as a.RowNum     from table1 a") 
    strSQL2.Append(" left join CodeTable j on a.lev_status=j.code_id and j.table_id='AppStatus'  where a.RowNum between 1 and 15 ")为什么会提示無效的資料行名稱 'RowNum'
      

  5.   

    row_number()不能这么使用,如果要把他的结果拿出来比较,得使用子查询.如:select * from 
    (select id , row_number() over(order by id) rownum from tb) t where rownum < 100
      

  6.   

     Dim strSQL2 As New StringBuilder("select * from (select a.*,a.chg_datetime,ROW_NUMBER() OVER (ORDER BY a.rec_id ASC) rownum,")
                    strSQL2.Append("b.dept_nam as dept_num from TRAIN_REC a  left join dept b on  a.dept_num=b.dept_num and a.fac_num=b.fac_num )y where rownum between 1 and 15 ")
    这样还不行哦
      

  7.   

     Dim strSQL2 As New StringBuilder("select * from (select a.rec_id,a.appro_status,a.cls_num,a.emp_id,a.taken_hr,a.exam_result,a.finasst_per,a.finasst_amt,a.finasst_apr_date,a.finasst_act_date,a.appro_status,a.crt_datetime,a.chg_datetime,ROW_NUMBER() OVER (ORDER BY a.rec_id ASC) as rownum,")
                    strSQL2.Append("b.dept_nam as dept_num,c.fac_num as fac_num,d.crs_nam as crs_num,e.user_nam as chg_user,f.user_nam as crt_user,g.code_value as grade_id,h.title_nam as title_id,i.code_value as atn_status,j.code_value as lev_status,k.emp_chn_nam  from TRAIN_REC a  ")
                    strSQL2.Append("left join dept b on  a.dept_num=b.dept_num and a.fac_num=b.fac_num left join facility c on a.fac_num=c.fac_num   left join course d on a.crs_num=d.crs_num  left join user_id e on a.chg_user=e.user_id left join user_id f on a.crt_user=f.user_id  ")
                    strSQL2.Append(" left join CodeTable g on a.grade_id=g.code_id and g.table_id='Grade' left join title h on a.title_id=h.title_id and h.fac_num=a.fac_num left join CodeTable i on a.atn_status=i.code_id and i.table_id='CrsStatus'  ")
                    strSQL2.Append(" left join CodeTable j on a.lev_status=j.code_id and j.table_id='AppStatus' left join employee k on a.emp_id=k.emp_id )y where y.rownum between 1 and 15 ")
    提示y AppStatus指定了多次