日期:2014-05-17  浏览次数:20462 次

求教一个查询语句,生成序列号
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