在Snowflake SQL中制定相关子查询(条件的行检查)

珍妮

我有两张桌子。第一个表如下所示:

CompanyID  | TIMESTAMP           | NewsitemID 
---------------------------------------------    
ID1        | 2000-01-06 15:00:00 | 1       
ID2        | 2000-01-06 15:32:00 | 2
ID1        | 2000-01-07 14:00:00 | 3
ID3        | 2000-01-07 17:00:00 | 4

现在,我想更新时间戳,如果它介于第二个表中给出的两个连续的关闭时间之间。如对应的SelectedTimestamp所示,新的时间戳应该是两个连续条目中的第二个。这是第二个表:

Closingtime         | SelectedTimestamp 
-----------------------------------------          
2000-01-05 16:00:00 | --
2000-01-06 16:00:00 | 2000-01-06 16:00:00
2000-01-07 16:00:00 | 2000-01-07 16:00:00
2000-01-10 16:00:00 | 2000-01-10 16:00:00

因此,我想要实现的是:

CompanyID  | TIMESTAMP           | NewsitemID | NewTimestamp
-------------------------------------------------------------------    
ID1        | 2000-01-06 15:00:00 | 1          | 2000-01-06 16:00:00    
ID2        | 2000-01-06 15:32:00 | 2          | 2000-01-06 16:00:00
ID1        | 2000-01-07 14:00:00 | 3          | 2000-01-07 16:00:00
ID3        | 2000-01-07 17:00:00 | 4          | 2000-01-10 16:00:00

但是我对Snowflake SQL还是很陌生,即使启动查询也有问题。我想我可能可以朝着

SELECT SelectedTimestamp 
WHERE TIMESTAMP BETWEEN lower_bound AND upper_bound

但是我不知道如何在ClosingTime给定的上下限之间“循环”。

非常感谢我如何进行此处的任何提示!

马尔辛·祖科夫斯基

我不确定100%想要的预期行为,因为第二个表格列相同。另外,您没有指定“下限/上限”对您意味着什么,但是我假设您的意思是连续两行。

无论哪种情况,Snowflake实际上都对子查询具有相当丰富的支持。希望这是您需要的:

select first.*, 
(select min(selectedtimestamp) 
  from second where closingtime > first.timestamp) as newtimestamp 
from first;
-----------+---------------------+------------+---------------------+
 COMPANYID |      TIMESTAMP      | NEWSITEMID |    NEWTIMESTAMP     |
-----------+---------------------+------------+---------------------+
 id1       | 2000-01-06 15:00:00 | 1          | 2000-01-06 16:00:00 |
 id2       | 2000-01-06 15:32:00 | 2          | 2000-01-06 16:00:00 |
 id3       | 2000-01-07 14:00:00 | 3          | 2000-01-07 16:00:00 |
 id4       | 2000-01-07 17:00:00 | 4          | 2000-01-10 16:00:00 |
-----------+---------------------+------------+---------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章