transaction_date
Booked_date指定交易何时发生 |
这是我期望的结果:
WITH transactions AS (
SELECT *
FROM VALUES
('2024-02-10', '2024-02-09', 50),
('2024-02-10', '2024-02-10', 50),
('2024-02-10', '2024-02-11', 50),
('2024-02-11', '2024-02-10', 50),
('2024-02-11', '2024-02-11', 50),
('2024-02-11', '2024-02-12', 50),
('2024-02-12', '2024-02-11', 50),
('2024-02-12', '2024-02-12', 50),
('2024-02-12', '2024-02-13', 50)
AS t(TRANSACTION_DATE, BOOKED_DATE, AMOUNT)
)
SELECT
TRANSACTION_DATE,
SUM(SUM(AMOUNT))
OVER (ORDER BY TRANSACTION_DATE) AS cumulative_amount,
SUM(SUM(IFF(BOOKED_DATE <= TRANSACTION_DATE, AMOUNT, 0)))
OVER (ORDER BY TRANSACTION_DATE) AS cumulative_amount_known_as_of_date
FROM TRANSACTIONS
GROUP BY TRANSACTION_DATE
cumulative_amount_as_of_date
('2024-02-10', '2024-02-11', 50)
我可以正确执行此操作?我正在尝试编写雪花查询以获得此结果。这是我的最初尝试: | ||
但 | 返回不正确的结果。例如,在2/11上,它应该排除行 | ,因为booked_date大于trassaction_date,但是只要预订日期小于2/11。 |
WITH transactions AS (
SELECT *
FROM VALUES
(CAST('2024-02-10' AS DATE), CAST('2024-02-09' AS DATE), 50),
(CAST('2024-02-10' AS DATE), CAST('2024-02-10' AS DATE), 50),
(CAST('2024-02-10' AS DATE), CAST('2024-02-11' AS DATE), 50),
(CAST('2024-02-11' AS DATE), CAST('2024-02-10' AS DATE), 50),
(CAST('2024-02-11' AS DATE), CAST('2024-02-11' AS DATE), 50),
(CAST('2024-02-11' AS DATE), CAST('2024-02-12' AS DATE), 50),
(CAST('2024-02-12' AS DATE), CAST('2024-02-11' AS DATE), 50),
(CAST('2024-02-12' AS DATE), CAST('2024-02-12' AS DATE), 50),
(CAST('2024-02-12' AS DATE), CAST('2024-02-13' AS DATE), 50)
AS t(TRANSACTION_DATE, BOOKED_DATE, AMOUNT)
)
SELECT
TRANSACTION_DATE,
SUM(SUM(AMOUNT))
OVER (ORDER BY TRANSACTION_DATE) AS cumulative_amount,
SUM(SUM(IFF(BOOKED_DATE <= TRANSACTION_DATE, AMOUNT, 0)))
OVER (ORDER BY TRANSACTION_DATE) AS cumulative_amount_known_as_of_date
FROM TRANSACTIONS
GROUP BY TRANSACTION_DATE
注意某些版本的SQL不会具有日期类型,您应该使用DateTime。 我相信雪花有约会