Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 标记发生在个人事件之后的日期_Sql_Date_Timestamp - Fatal编程技术网

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-

我有一组长格式的数据,每人几行,person=id,其中event=1应该只发生一次。事件发生后,该人员不应再提供任何数据

如果事件发生后出现任何记录,我想用一个名为flag flag=1的新变量创建一个查询

例如,id 5标记在下面,因为该人员的事件后会出现一行数据。所有其他场景都可以

因此,我需要将ID组合在一起,然后检查事件日期之后发生的任何日期

在SQL中实现这一点最有效的方法是什么

以逗号分隔的数据示例:

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