Sql 按记录分组,如果条件匹配,则按以下方式设置最终结果

Sql 按记录分组,如果条件匹配,则按以下方式设置最终结果,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我想按记录分组,如果条件匹配,则按特定组分组,然后设置最终结果,如下所示 declare @table table ( id int, status varchar(50) ) insert into @table values(1,'Open'),(1,'Open'),(1,'Open'), (2,'Open'),(2,'Pending'),(2,'Open'), (3,'Open'),(3,'Completed'),(3,'Pending'),

我想按记录分组,如果条件匹配,则按特定组分组,然后设置最终结果,如下所示

declare @table table
(
    id int,
    status varchar(50)
)

insert into @table
    values(1,'Open'),(1,'Open'),(1,'Open'),
    (2,'Open'),(2,'Pending'),(2,'Open'),
    (3,'Open'),(3,'Completed'),(3,'Pending'),
    (4,'Pending'),(4,'Pending'),(4,'Pending'),
    (5,'Completed'),(5,'Completed'),(5,'Completed')
对于每组,我要检查以下条件

--expected output
--Id    Status
--1     Open
--2     Pending
--3     Pending
--4     Pending
--5     Completed

您可以使用条件逻辑:

--Open
--Open => Open
--Open

--Open
--Pending => Pending
--Open

--Open
--Completed => Pending
--Open

--Pending
--Pending =>Pending
--Pending

--Completed
--Completed =>Completed
--Completed

是一个dbfiddle。

您可以使用条件逻辑:

--Open
--Open => Open
--Open

--Open
--Pending => Pending
--Open

--Open
--Completed => Pending
--Open

--Pending
--Pending =>Pending
--Pending

--Completed
--Completed =>Completed
--Completed

是一把小提琴。

请解释一下逻辑。不清楚您是否涵盖了所有条件。假设您只使用了1个版本的SQL Server,请更正您的标记。引用格式是指你实际引用的内容,而不仅仅是强调。请解释一下逻辑。不清楚您是否涵盖了所有条件。假设您只使用了1个版本的SQL Server,请更正您的标记。引用格式是指你实际引用的内容,而不仅仅是为了强调。谢谢,@Gordon Linoff我试过了,但我不知道如何用你的解决方案实现它,我知道如何实现它Hanks,@Gordon Linoff我试过了,但我不知道如何用你的解决方案实现它,我对如何实现这一目标有一个想法