回答

收藏

标记个人事件发生后发生的日期

技术问答 技术问答 454 人阅读 | 0 人回复 | 2023-09-12

我有一组长格式的数据(每人几行,person = id),其中一个事件(event = 1)应该只发生一次。事件发生后,此人将不再有其他数据。7 M. R& X7 E& ?6 m0 m
如果事件发生后有记录,我想创建一个名字flag(flag = 1)查询新变量。' g4 f$ w9 R5 ]! E# D9 a3 ?! G5 q
例如,id 5在下面标记,因为这个人的事件发生后会有一行数据。所有其他计划都可以。
( ?9 C" ~2 ?+ L6 I: W因此,我需要将ID分组检查事件日期后的任何日期。5 O2 c+ s+ S( F) u) @# X4 H* o
在SQL实现这一目标最有效的方法是什么?
" f0 v7 d# n3 ^; h5 c% l" t示例数据(逗号分隔):
9 `. v& x' \3 _+ vid,date,event,flag1,01-Aug-14,0,01,02-Aug-14,0,02,01-Aug-14,0,02,02-Aug-14,1,03,01-Aug-14,1,04,01-Aug-14,0,05,01-Aug-14,0,05,02-Aug-14,1,05,03-Aug-14,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8 r+ N6 E8 ?! m+ j# W
    解决方案:                                                                + f0 G6 x% I+ [  B4 G
                                                                我用了一个subselect计算日期前ID的事件数。0 a5 ]) G9 Z0 D
sqlfiddle
1 M( ?& H0 e/ m+ Y- sselect id,case     when (select count(1) from yourTable t2  where t2.date  0 then 1    else 0   end as flagfromyourTable t1
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则