如何保存最后一个检查点在sql中用于下一行
发布时间:2020-12-12 16:33:30 所属栏目:MsSql教程 来源:网络整理
导读:有什么办法可以存储最后一个迭代的行结果,并将其用于下一行迭代? 例如我有一个表(Time_Table). __ Key type timeStamp 1 ) 1 B 2015-06-28 09:00:00 2 ) 1 B 2015-06-28 10:00:00 3 ) 1 C 2015-06-28 11:00:00 4 ) 1 A 2015-06-28 12:00:00 5 ) 1 B 2015-06-
有什么办法可以存储最后一个迭代的行结果,并将其用于下一行迭代?
例如我有一个表(Time_Table). __ Key type timeStamp 1 ) 1 B 2015-06-28 09:00:00 2 ) 1 B 2015-06-28 10:00:00 3 ) 1 C 2015-06-28 11:00:00 4 ) 1 A 2015-06-28 12:00:00 5 ) 1 B 2015-06-28 13:00:00 现在假设我有一个常数为90分钟的异常时间. >对于第一行,因为在09:00:00之前没有行,它会直接把这个记录放在我的目标表中.现在我的参考点是在9:00:00. 目标表 __ Key type timeStamp 1 ) 1 B 2015-06-28 09:00:00 2 ) 1 C 2015-06-28 11:00:00 3 ) 1 B 2015-06-28 13:00:00 有没有什么办法可以解决这个问题纯粹在SQL? 我的做法: SELECT * FROM Time_Table A WHERE NOT EXISTS( SELECT 1 FROM Time_Table B WHERE A.timeStamp > B.timeStamp AND abs(TIMESTAMPDIFF(s,B.timeStamp,A.timeStamp)) > 90 ) 但这实际上不会起作用. 解决方法这在Vertica中只使用纯SQL是不可能的.要在纯SQL中执行此操作,您需要能够执行Vertica产品不支持的递归查询.在其他数据库产品中,您可以使用WITH子句执行此操作.对于Vertica,您将不得不在应用程序逻辑中执行此操作.这是基于语句“查询块中的每个WITH子句必须具有唯一的名称.尝试在同一个查询块中使用相同名称的别名的别名查询名称导致错误WITH子句不支持INSERT,DELETE,和UPDATE语句,并且您不能递归地使用它们“从 Vertica 7.1.x documentation(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |