重新编号摘要节字段,从“开始”;1“;在SQL Server中
我有下面的输入表。我需要一种智能的方法,从“01”开始动态地对父节索引重新编号,并在新列中显示它们 我正在使用SQL Server 2014 Express SP2 MyTable:重新编号摘要节字段,从“开始”;1“;在SQL Server中,sql,sql-server,string,stored-procedures,varchar,Sql,Sql Server,String,Stored Procedures,Varchar,我有下面的输入表。我需要一种智能的方法,从“01”开始动态地对父节索引重新编号,并在新列中显示它们 我正在使用SQL Server 2014 Express SP2 MyTable: ID Integer SECTION Varchar 查询: SELECT * FROM MyTable 结果: +--+--------+ |ID|SECTION | +--+--------+ |1 |03 | |2 |03.01 | |3 |03.01.01| |4 |03.02
ID Integer
SECTION Varchar
查询:
SELECT * FROM MyTable
结果:
+--+--------+
|ID|SECTION |
+--+--------+
|1 |03 |
|2 |03.01 |
|3 |03.01.01|
|4 |03.02 |
|5 |03.03 |
|6 |04 |
|7 |04.01 |
|8 |04.02 |
|9 |05 |
+--+--------+
以下是我试图通过选择或过程实现的目标:
+--+--------+--------+
|ID|SECTION |NEWSECT |
+--+--------+--------+
|1 |03 |01 |
|2 |03.01 |01.01 |
|3 |03.01.01|01.01.01|
|4 |03.02 |01.02 |
|5 |03.03 |01.03 |
|6 |04 |02 |
|7 |04.01 |02.01 |
|8 |04.02 |02.02 |
|9 |05 |03 |
+--+--------+--------+
这只是字符串操作:
select t.*,
stuff(section, 1, 2,
right(concat('00', dense_rank() over (order by left(section, 2))), 2)
)
from t;
我的意思是,densite\u rank()
正在为主要部分重新编号。剩下的只是将值放入部分
是一个dbfiddle。到目前为止您尝试了什么?将有多少根目录?喜欢01..02..09... 更多?我试着用一个存储过程在报告中循环,并将当前值存储在一个临时变量中,但我真的不知道这样做是否正确。根目录未定义。还请提及SQL Server版本。如果该部分以3位数字开头并加上一个点,它是否也会起作用。比如101.02.02?@mkRabbani。不,但这不是OP提出的问题。如果这是一个问题,这可以很容易地调整,或者你(或OP)可以问另一个问题。