Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Sql server 我可以获取行号以在以后的查询中继续序列吗_Sql Server_Tsql_Sql Server 2012_Row Number - Fatal编程技术网

Sql server 我可以获取行号以在以后的查询中继续序列吗

Sql server 我可以获取行号以在以后的查询中继续序列吗,sql-server,tsql,sql-server-2012,row-number,Sql Server,Tsql,Sql Server 2012,Row Number,我有下面的查询来给我一个行号,它在正在进行的案例中充当“阶段”。此查询在INSERT INTO下运行,以填充表。 此时,我们必须每月完整地重新构建该表,以用一个连续的行号(随着流程的推进,案例的每个阶段都有一行)捕获阶段中的每个更改。在某个时候,表会变得太大而无法执行此操作,我希望能够追加,但问题是,我想不出一种方法来让行号从停止的位置继续。我在一个测试表中尝试了它,当我运行两次查询时,将2015年11月分为两半,每个案例中从11月上半月更改为下半月的任何阶段,如果是在第二次运行,则行号从1开始

我有下面的查询来给我一个行号,它在正在进行的案例中充当“阶段”。此查询在INSERT INTO下运行,以填充表。 此时,我们必须每月完整地重新构建该表,以用一个连续的行号(随着流程的推进,案例的每个阶段都有一行)捕获阶段中的每个更改。在某个时候,表会变得太大而无法执行此操作,我希望能够追加,但问题是,我想不出一种方法来让行号从停止的位置继续。我在一个测试表中尝试了它,当我运行两次查询时,将2015年11月分为两半,每个案例中从11月上半月更改为下半月的任何阶段,如果是在第二次运行,则行号从1开始,而不是继续

ModifiedRecordID列用于标识案例,您可以看到分区的分组依据

有什么办法可以实现我的想法吗

SELECT  agc.ObjectTypeCode
   , ev.Name                           AS EntityName
   , agc.AttributeId
   , ea.AttributeName
   , ind.createdbyname                 AS CaseCreatedBy
   , agc.CallingUserName
   , agc.CallingUserId
   , LEFT(CAST(agc.OldFieldValue AS NVARCHAR(MAX)), ISNULL(NULLIF(CHARINDEX(',', CAST(agc.OldFieldValue AS NVARCHAR(MAX))) -1, -1), '')) AS ChangedField
   , UPPER(RIGHT(CAST(agc.OldFieldValue AS NVARCHAR(MAX)), LEN(CAST(agc.OldFieldValue AS NVARCHAR(MAX))) - CHARINDEX(',', CAST(agc.OldFieldValue AS NVARCHAR(MAX))))) AS PreviousGuidValue
   , wkt.ptl_name                      AS WorkType
   , ModifiedRecordId
   , ind.ticketnumber                  AS CaseRef
   , agc.ActionId
   , ind.createdon                     AS MatterCreated    
   , agc.LogDateTime                   AS AuditedDate
   , agc.AuditId
   , ROW_NUMBER() OVER(PARTITION BY ModifiedRecordId ORDER BY agc.LogDateTime ASC) Stage

FROM AuditGuidChange agc LEFT JOIN EntityView ev
                   ON agc.ObjectTypeCode = ev.ObjectTypeCode
                 LEFT JOIN EntityAttribute ea
                   ON agc.AttributeId = ea.ColumnNumber
                     AND agc.ObjectTypeCode = ea.MappedObjectCode
                 LEFT JOIN Peppermint_Data.dbo.incident ind
                   ON agc.modifiedrecordid = ind.incidentid
                 LEFT JOIN Filteredptl_worktype wkt
                   ON agc.PreviousGuidValue = wkt.ptl_worktypeid
WHERE LEFT(CAST(agc.OldFieldValue AS NVARCHAR(MAX)), ISNULL(NULLIF(CHARINDEX(',', CAST(agc.OldFieldValue AS NVARCHAR(MAX))) -1, -1), '')) = 'ptl_worktype'
AND CAST(agc.LogDateTime AS DATE) BETWEEN @sDate AND @eDate;

不确定我是否正确地描述了您的目标,但是您可以将新行号添加到子查询中,以获取该分区的最大现有行号?您是否考虑过向AuditGuidChange添加列?这将为您生成一个唯一、一致、可重复的号码?如果我误解了要求,我会道歉,我想可能就是这样。
declare @offset int = 12;
select id, ROW_NUMBER() over (order by id) + @offset  as rn 
from table;