我正在尝试更新 tblForm10Objectives,根据从 tblForm10Goals、tblForm10GoalsObjectives 和 tblForm10Objectives 的连接返回的行数,将 ObjectiveNumber 列设置为从 1 开始的递增数字,其中 ID_Agency = tblForm10Goals 中的代理 ID,
到目前为止的示例查询:
UPDATE dbo.tblForm10Objectives
SET ObjectiveNumber = rn
FROM tblForm10Goals As g
Left Join tblForm10GoalsObjectives gobs ON g.ID_Form10Goal = gobs.ID_Form10Goal
Right Join
(
SELECT
ROW_NUMBER() OVER (PARTITION BY g.ID_Agency
ORDER BY OB.ID_Form10Objective) AS rn,
OB.ID_Form10Objective
FROM tblForm10Goals g
LEFT JOIN dbo.tblForm10GoalsObjectives gobs ON g.ID_Form10Goal = gobs.ID_Form10Goal
RIGHT JOIN dbo.tblForm10Objectives OB ON gobs.ID_Form10Objective = OB.ID_Form10Objective
Where g.ID_Agency = 2
) rns ON dbo.tblForm10Objectives.ID_Form10Object = rns.ID_Form10Objective
内部 select 语句返回正确递增的 ObjectiveNumber 值,我只需要使用 ObjectiveNumber = rn 更新 dbo.tblForm10Objectives。提前感谢您的任何帮助。
脚本表
第一个表
CREATE TABLE [dbo].[tblForm10Goals](
[ID_Form10Goal] [int] IDENTITY(1,1) NOT NULL,
[ID_Agency] [int] NOT NULL,
[GoalNumber] [int] NULL,
[GoalDescription] [varchar](1200) NULL,
[Locked] [bit] NULL,
CONSTRAINT [PK_tblForm10Goals] PRIMARY KEY CLUSTERED
(
[ID_Form10Goal] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
第二张表
CREATE TABLE [dbo].[tblForm10GoalsObjectives](
[ID_Form10GoalObjective] [int] IDENTITY(1,1) NOT NULL,
[ID_Form10Goal] [int] NOT NULL,
[ID_Form10Objective] [int] NOT NULL,
CONSTRAINT [PK_tblForm10GoalsObjectives] PRIMARY KEY CLUSTERED
(
[ID_Form10GoalObjective] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
第三表
CREATE TABLE [dbo].[tblForm10Objectives](
[ID_Form10Objective] [int] IDENTITY(1,1) NOT NULL,
[ObjectiveNumber] [int] NULL,
[ObjectiveDescription] [varchar](1200) NULL,
[UnitofMeasure] [varchar](100) NULL,
[Q1Target] [varchar](50) NULL,
[Q1Actual] [varchar](50) NULL,
[Q1ActualLocked] [bit] NULL,
[Q2Target] [varchar](50) NULL,
[Q2Actual] [varchar](50) NULL,
[Q2ActualLocked] [bit] NULL,
[Q3Target] [varchar](50) NULL,
[Q3Actual] [varchar](50) NULL,
[Q3ActualLocked] [bit] NULL,
[Q4Target] [varchar](50) NULL,
[Q4Actual] [varchar](50) NULL,
[Q4ActualLocked] [bit] NULL,
[AnnualTarget] [varchar](50) NULL,
[AnnualActual] [varchar](50) NULL,
[AnnualActualLocked] [bit] NULL,
[TargetsLocked] [bit] NULL,
[Locked] [bit] NULL,
CONSTRAINT [PK_tblForm10Objectives] PRIMARY KEY CLUSTERED
(
[ID_Form10Objective] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO