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我试过了,但我不知道如何用你的解决方案实现它,我对如何实现这一目标有一个想法