Я пытаюсь обновить tblForm10Objectives, установить столбец ObjectiveNumber в число с добавлением числа, начинающееся с 1, в зависимости от количества строк, возвращаемых из соединения tblForm10Goals, tblForm10GoalsObjectives и tblForm10Objectives, где ID_Agency = идентификатор агентства что в tblForm10Goals,строка инкремента с несколькими связанными таблицами
Пример запроса до сих пор:
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
внутренний оператор выбора возвращает правильно инкрементируется значения ObjectiveNumber, мне просто нужно обновить dbo.tblForm10Objectives с ObjectiveNumber = гп. Спасибо заранее за любую помощь.
Scripted Столы
Первая таблица
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
Основываясь на формате вашей функции окна, похоже, что вы используете MS SQL. Если да, пожалуйста, пометьте свой вопрос как таковой, чтобы мы знали, как вам помочь. –
@JonofAllTrades: «* format *» функции окна будет работать на большинстве современных СУБД. Это наличие префикса 'tbl' и схемы' dbo', которые намекают на MS SQL. –
Я изменил его на sql-server-2008, извините за это .... – dhopp