求教一个查询语句,生成序列号
tab1
serial_no file_name,file_flag
   12        145.txt   0
   13        145.txt   2
   14        57.doc    0
   15        67.doc    1
   16        67.doc    2
   17        36.doc    0
   18        36.doc    1
查询要得到以下结果
ID serial_no  file_name   
1    12        145.txt    
      13        145.txt    
2    14        67.doc     
      15        67.doc     
      16        67.doc     
3    17        36.doc     
      18        36.doc     
每一个file_flag为0时表示开始标志2为结束,请教这个查询语句,在线等待
------解决方案--------------------rank排序
------解决方案--------------------SQL code
with cet1 as
(select dense_rank()over(order by serial_no)rn,serial_no from tb where file_name = 0)
select isnull(cast(rn as varchar(10)),'')ID,a.serial_no, a.file_name
from tb a left join cet1 b on a.serial_no = b.serial_no