Sql 标记发生在个人事件之后的日期
我有一组长格式的数据,每人几行,person=id,其中event=1应该只发生一次。事件发生后,该人员不应再提供任何数据 如果事件发生后出现任何记录,我想用一个名为flag flag=1的新变量创建一个查询 例如,id 5标记在下面,因为该人员的事件后会出现一行数据。所有其他场景都可以 因此,我需要将ID组合在一起,然后检查事件日期之后发生的任何日期 在SQL中实现这一点最有效的方法是什么 以逗号分隔的数据示例:Sql 标记发生在个人事件之后的日期,sql,date,timestamp,Sql,Date,Timestamp,我有一组长格式的数据,每人几行,person=id,其中event=1应该只发生一次。事件发生后,该人员不应再提供任何数据 如果事件发生后出现任何记录,我想用一个名为flag flag=1的新变量创建一个查询 例如,id 5标记在下面,因为该人员的事件后会出现一行数据。所有其他场景都可以 因此,我需要将ID组合在一起,然后检查事件日期之后发生的任何日期 在SQL中实现这一点最有效的方法是什么 以逗号分隔的数据示例: id,date,event,flag 1,01-Aug-14,0,0 1,02-
id,date,event,flag
1,01-Aug-14,0,0
1,02-Aug-14,0,0
2,01-Aug-14,0,0
2,02-Aug-14,1,0
3,01-Aug-14,1,0
4,01-Aug-14,0,0
5,01-Aug-14,0,0
5,02-Aug-14,1,0
5,03-Aug-14,0,1
我使用子选择来计算日期之前id的事件数
基于示例数据,您期望的输出是什么?谢谢,但这会选择所有列。我只想选择[id]和名为[flag]@user2964644的新变量,然后编辑所选的列。我已经编辑了答案,谢谢。如何将其与INSERT INTO SELECT语句结合起来创建一个包含[id]和[flag]的新表?@user2964644只需在SELECT之前将INSERT添加到OtherTableName中即可。如果这是你想要的答案,也请接受这个答案。
select id,
case
when (select count(1) from yourTable t2 where t2.date < t1.date and t1.id = t2.id and t2.event = 1) > 0 then 1
else 0
end as flag
from
yourTable t1