当前位置: 代码迷 >> Sql Server >> 同一表中分组用下一条更新上一条中对应字段解决办法
  详细解决方案

同一表中分组用下一条更新上一条中对应字段解决办法

热度:45   发布时间:2016-04-24 10:36:51.0
同一表中分组用下一条更新上一条中对应字段

在[T_WorkFlowLog]表中存在多条记录,我想实现利用下一条中的[curTaskName]和[curOperatorUserName]字段
更新上一条中的[nextTransitionName]和[nextActor]字段。希望得到大家的帮助!
------解决方案--------------------


with tableA as(
SELECT top 18 
rn = ROW_NUMBER() OVER(ORDER BY [processInstanceId],id)
  ,[id]
      ,[processInstanceId]
      ,[curTaskName]
      ,[curOperatorUserName]
      ,[curOperatorRealName]
      ,[nextTransitionName]
      ,[nextActor]
      ,[nextActorName]     
FROM [dbo].[T_WorkFlowLog]
    order by [processInstanceId],id
)
,tableB as(
SELECT top 18 
rn = ROW_NUMBER() OVER(ORDER BY [processInstanceId],id)
  ,[id]
      ,[processInstanceId]
      ,[curTaskName]
      ,[curOperatorUserName]
      ,[curOperatorRealName]
      ,[nextTransitionName]
      ,[nextActor]
      ,[nextActorName]     
FROM [dbo].[T_WorkFlowLog]
    order by [processInstanceId],id
)
UPDATE tableA SET tableA.nextActor=tableB.curOperatorUserName,tableA.nextActorName=tableB.[curTaskName]
FROM tableA,tableB
WHERE tableA.rn = tableB.RN-1

select * from [T_WorkFlowLog]
/*
1 1751 891 部门负责人审核 1200401364 雷迎春 提交申请 1200400198 拟稿人
2 4515 891 拟稿人 1200400198 陈建南 审核通过 1200401364 分发
3 7189 891 分发 1200401364 雷迎春 分发 1200400169 部门负责人审核
4 1752 892 部门负责人审核 1200400169 郑淑娟 提交申请 1200400601 拟稿人
5 4516 892 拟稿人 1200400601 李志强 审核通过 1200400169 分发
6 7190 892 分发 1200400169 郑淑娟 分发 1200400169 部门负责人审核
7 1753 893 部门负责人审核 1200400169 郑淑娟 提交申请 1200400836 拟稿人
8 4517 893 拟稿人 1200400836 刘满凤 审核通过 1200400169 分发
9 7191 893 分发 1200400169 郑淑娟 分发 1200400169 部门负责人审核
10 1754 900 部门负责人审核 1200400169 郑淑娟 提交申请 1200400601 拟稿人
11 4518 900 拟稿人 1200400601 李志强 审核通过 1200400169 分发
12 7192 900 分发 1200400169 郑淑娟 分发 1200401623 部门负责人审核
13 1755 904 部门负责人审核 1200401623 雷发斌 提交申请 1200400162 拟稿人
14 4519 904 拟稿人 1200400162 黄晓全 审核通过 1200401623 分发
15 7194 904 分发 1200401623 雷发斌 分发 1200400169 部门负责人审核
16 1756 905 部门负责人审核 1200400169 郑淑娟 提交申请 1200400601 拟稿人
17 4520 905 拟稿人 1200400601 李志强 审核通过 1200400169 分发
18 7193 905 分发 1200400169 郑淑娟 分发
*/
  相关解决方案