Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新编号摘要节字段,从“开始”;1“;在SQL Server中_Sql_Sql Server_String_Stored Procedures_Varchar - Fatal编程技术网

重新编号摘要节字段,从“开始”;1“;在SQL Server中

重新编号摘要节字段,从“开始”;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

我有下面的输入表。我需要一种智能的方法,从“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   |
|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)可以问另一个问题。