小编kim*_*imi的帖子

在 Snowflake 中生成日期范围

我想创建两个时间戳之间的日期范围。我看到类似的帖子,也检查了这个方法。然而,仍然无法达到下面的预期输出。

请注意,如果ended_at为NULL,则CURRENT_TIMESTAMP需要取。

示例数据:

WITH t1 AS (
SELECT 'A' AS id, '2021-05-18 18:30:00'::timestamp AS started_at, '2021-05-19 09:45:00'::timestamp AS ended_at UNION ALL
SELECT 'B' AS id, '2021-05-24 11:30:40'::timestamp AS started_at, NULL::timestamp AS ended_at
    )
SELECT *
FROM t1
Run Code Online (Sandbox Code Playgroud)

预期结果:

在此输入图像描述

sql date time-series date-range snowflake-cloud-data-platform

4
推荐指数
1
解决办法
2954
查看次数

MATCH_RECOGNIZE 与 Snowflake 中的 CTE

MATCH_RECOGNIZE我在带有一些 CTE 的查询中使用函数。当我运行查询时,出现以下错误:

SQL 编译错误:在此上下文中不支持 MATCH_RECOGNIZE。

在我的查询中,MATCH_RECOGNIZE 之前和之后有几个 CTE,部分如下。

WITH cte1 AS (
SELECT *
FROM dataset
WHERE ID IS NOT NULL AND STATUS IS NOT NULL ),

cte2 AS (
SELECT *
FROM cte1
QUALIFY FIRST_VALUE(STATUS) OVER (PARTITION BY ID ORDER BY CREATED_AT) = 'created' )

mr as (
SELECT *
    FROM cte2
    MATCH_RECOGNIZE (
      PARTITION BY ID
      ORDER BY CREATED_AT
      MEASURES MATCH_NUMBER() AS mn,
               MATCH_SEQUENCE_NUMBER AS msn
      ALL ROWS PER MATCH
      PATTERN (c+m+)
      DEFINE
         c AS status='created' …
Run Code Online (Sandbox Code Playgroud)

sql common-table-expression sql-view snowflake-cloud-data-platform match-recognize

1
推荐指数
1
解决办法
554
查看次数