【发布时间】:2019-12-12 15:39:25
【问题描述】:
以下是我的原始数据
DATE Product_id Customer_ID
----------------------------
01-JUL-14 60 A
01-AUG-14 45 A
01-SEP-14 45 A
01-SEP-14 50 A
01-OCT-14 30 A
01-JUL-14 60 B
01-AUG-14 45 B
01-SEP-14 45 B
01-OCT-14 30 B
这是我的滚动计数的预期结果
MMYY Distinct Customer
Product
-------------------------
JUL-14 1 A
AUG-14 2 A
SEP-14 3 A
OCT-14 3 A
JUL-14 1 B
AUG-14 2 B
SEP-14 2 B
OCT-14 2 B
我需要它的工作方式是,对于每个 MMYY,我需要回顾 3 个月,并为每个客户计算不同的产品 产品可以重复。而且一个客户在同一个月内可以拥有超过 1 件产品。
通常我会这样写查询
SELECT
customer_ID,
T.Date as MMYY,
COUNT(DISTINCT Product_id)
OVER (PARTITION BY customer_ID ORDER BY T.Date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
AS Last_3_month_count
FROM T
但问题是我们不能使用 COUNT(DISTINCT Product_id) 它会报错。 建议我用其他方法来解决这个问题。
【问题讨论】: