부울 플래그가있는 테이블에서 선택 항목을 업데이트해야합니다. 아래는 내가 무엇을 보는지 보여주는 예입니다.그들 사이에 의존 관계가있는 레코드 선택
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Answers2](
[GroupID] [int] NOT NULL,
[CompanyID] [int] NOT NULL,
[RankID] [int] NOT NULL,
[AnswerTime] [datetime] NULL,
[OnTop] [bit] NOT NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (9, 1, 1, NULL, 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 1, 1, CAST(0x0000A3A400C5C100 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 2, 2, CAST(0x0000A3A400D63BC0 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 3, 3, CAST(0x0000A3A400CDFE60 AS DateTime), 0)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 4, 4, CAST(0x0000A3A400E6B680 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 5, 5, NULL, 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (10, 6, 6, CAST(0x0000A3A400F73140 AS DateTime), 0)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (11, 1, 1, CAST(0x0000A3A400D63BC0 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (11, 2, 2, CAST(0x0000A3A400C5C100 AS DateTime), 0)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (11, 3, 3, CAST(0x0000A3A400CDFE60 AS DateTime), 0)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (11, 4, 4, CAST(0x0000A3A400E6B680 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (11, 5, 5, CAST(0x0000A3A400EEF3E0 AS DateTime), 1)
INSERT [dbo].[Answers2] ([GroupID], [CompanyID], [RankID], [AnswerTime], [OnTop]) VALUES (12, 1, 1, CAST(0x0000A3A400F73140 AS DateTime), 1)
다음과 같은 논리가 있습니다. 질문은 한 번에 하나 이상의 회사에 보내집니다. 회사의 순위가 가장 높은 회사는 OnTop 비트를받습니다. 그들이 응답하지 않은 다음 회사 (계급 및 그룹 ID에 따라)에 응답하면 OnTop 비트가 true로 설정됩니다. OnTop 플래그가있는 회사가 응답하지 않는 경우 (순위 및 그룹 ID에 따라) 회사를 찾지 않습니다.
커서를 사용하여이 문제를 해결할 수 있지만 EF 마이그레이션에서 사용되므로 이전 레코드를 새 OnTop 플래그로 업데이트하는 하나의 문장이어야합니다. 나는 내부 조인을 시도하고 시간과 순위가 낮지 만 현재 게시물 위의 그룹 전체 트리에 대해 계산하지 않는지 살펴 보았습니다. 아이디어 나 코드 제안은 대단히 감사하겠습니다.