根据列在选择语句中添加运行编号

时间:2019-03-22 04:09:50

标签: sql sql-server row

我有一个视图receipt_data,其中包含contract_noreceipt_no列-像这样:

contract_no | receipt_no | Amount
------------+------------+---------
1176        | ABMN1024   |  100 
1176        | ABMN1027   |  767
1176        | ABMN1027   |  345
NULL        | MNDF7132   |  389
NULL        | NULL       |  673
1046        | MDGF2344   |  454

我需要查询此视图并添加运行编号。运行编号应添加如下。

 run_no    |contract_no | receipt_no | Amount
 ----------+------------+------------+--------    
  1        | 1176       | ABMN1024   |  100 
  2        | 1176       | ABMN1027   |  767
           | 1176       | ABMN1027   |  345
  3        | NULL       | MNDF7132   |  389
           | NULL       | NULL       |  673
  4        |1046        | MDGF2344   |  454  

运行编号必须类似于

  1. 将运行编号添加到唯一的contract_no + receipt_no
  2. 如果receipt_no有值,则返回运行编号
  3. 如果receipt_no为空,则无需添加流水号,就跳过它

是否可以这样编写脚本?请帮助

1 个答案:

答案 0 :(得分:0)

您可以尝试使用row_number()分析函数

select 
case when receipt_no is not null
then
row_number()over(order by (select null))
else null end as run_no,t.* from
table_name t