【发布时间】:2020-07-13 18:59:40
【问题描述】:
我正在尝试创建一个递归 CTE,它遍历给定 ID 的所有记录,并在有序记录之间执行一些操作。假设我有一家银行的客户被收取了可唯一识别的费用,而客户可以分期支付该费用:
WITH recursive payments (
id
, index
, fees_paid
, fees_owed
)
AS (
SELECT id
, index
, fees_paid
, fee_charged
FROM table
WHERE index = 1
UNION ALL
SELECT t.id
, t.index
, t.fees_paid
, p.fees_owed - p.fees_paid
FROM table t
JOIN payments p
ON t.id = p.id
AND t.index = p.index + 1
)
SELECT *
FROM payments
ORDER BY 1,2;
连接逻辑看起来不错,但是当我将此查询的输出连接到源表时,我得到了不确定和不正确的结果。
这是我第一次尝试 Snowflake 的递归 CTE。我在导致此处的不确定性的中间结果逻辑中遗漏了什么?
【问题讨论】:
-
在 2 个表中提供示例数据、您期望的结果以及您获得的结果可能会有所帮助。这将有助于其他人尝试复制问题并为您解决问题。
-
感谢您的建议 - 我绝对应该发布一些示例数据和预期结果。原谅我 - 我是 stackoverflow 的新手。在剥离层并查看中间结果时,我认为 CTE 本身不是问题,因此我感到沮丧和困惑。非确定性来自此查询的视图。
标签: snowflake-cloud-data-platform