我有一个过程,记录事件何时发生,并假定此事件在接下来的六个小时内有影响。SQL Query根据查找前n行内的值来指定值
表中的数据由Date,Period,BooleanValue组成;如果日期为dd/mm/yyy,则该期间的值为1-48,表示半小时期间(一天中有48天)以及事件是否导致发生(Impact或NotImpact)。作为一个例子,发生于2011年1月5日(期间3)一个单一的事件,因此,该表如下所示:
Date Period Event
05/01/2011 1 NotImpact
05/01/2011 2 NotImpact
05/01/2011 3 IMPACT
05/01/2011 4 NotImpact
05/01/2011 5 NotImpact
在Excel中,我创建了第四列,并写了一个公式,以查找“打假”在“事件”列中,如果找到,则将接下来的12个半小时标记为“影响”。如果未找到“IMPACT”,则使用默认值“NotImpact”。
=IF(IF(ISERROR(COUNTIF(E2:E13,"IMPACT")),"NotImpact",COUNTIF(E2:E13,"DIS"))>0,"IMPACT","NotImpact")
应用这个公式,到第四列,会导致它:
Date Period Event ImpactYesNo
05/01/2011 1 NotImpact NotImpact
05/01/2011 2 NotImpact NotImpact
05/01/2011 3 IMPACT IMPACT
05/01/2011 4 NotImpact IMPACT
05/01/2011 5 NotImpact IMPACT
05/01/2011 6 NotImpact IMPACT
05/01/2011 7 NotImpact IMPACT
05/01/2011 8 NotImpact IMPACT
05/01/2011 9 NotImpact IMPACT
05/01/2011 10 NotImpact IMPACT
05/01/2011 11 NotImpact IMPACT
05/01/2011 12 NotImpact IMPACT
05/01/2011 13 NotImpact IMPACT
05/01/2011 14 NotImpact IMPACT
05/01/2011 15 NotImpact NotImpact
05/01/2011 16 NotImpact NotImpact
05/01/2011 17 NotImpact NotImpact
我更喜欢在SQL生成此表(此表驻留在SQL Server 2005盒上)我试图在那里复制这个Excel方法(并且在Python中编写函数),但没有成功。如果有人能帮助我或指出我的方向,我会非常感激。
如果我能回答什么我问任何问题,请不要犹豫,弹出他们的意见
可以跨天事件影响 - 即。如果2011年1月5日第47期有影响,是否影响到2011年1月6日的第10期? – 2011-12-22 13:29:52
如果它发生在第15期,你是否希望它在第二天的第3期运行?或者在一天结束时停止? – gbn 2011-12-22 13:58:29
(1)一个事件可以持续几天,这是非常正确的马克 (2)如果它发生在第15期 - 第15个半小时 - 它将运行到第27期 – 2011-12-22 14:08:26