我的 Teradata 表中有以下数据,我试图根据某些条件将行数设为“TENURE”
有
Id MONTH ORDERNO STATUS
101 2022-01-31 105 00
101 2022-02-28 105 00
101 2022-03-31 106 00
101 2022-04-30 106 07
101 2022-05-31 106 07
102 2022-01-01 105 00
102 2022-02-28 105 00
102 2022-03-31 105 07
102 2022-04-28 105 07
想要
Id TENURE
101 4
102 3
我必须排除 STATUS='07' 的第 2 次出现并计算月数
我正在使用以下窗口函数来获取行数,但我不知道如何 添加 status='07' 过滤器
SELECT id,
COUNT(*) OVER (PARTITION BY id ORDER BY MONTH ROWS BETWEEN UNBOUNDED PRECEDING AND
UNBOUNDED FOLLOWING) AS TENURE FROM Have;
我分别得到以下而不是 4 和 3
Id TENURE
101 5
102 4
您的示例有些不正确(顺便说一句,“MONTH”应该在引号中,因为它是保留字)。
INSERT INTO DWHPRO.HAVE (Id, "MONTH", ORDERNO, STATUS) 值 (101, '2022-01-31', 105, '00'), (101, '2022-02-28', 105, '00'), (101, '2022-03-31', 106, '00'), (101, '2022-04-30', 106, '07'), (101, '2022-05-31', 106, '07'), (102, '2022-01-01', 105, '00'), (102, '2022-02-28', 105, '00'), (102, '2022-03-31', 105, '07'), (102, '2022-04-28', 105, '07');
SELECT id, COUNT(*) OVER (PARTITION BY id ORDER BY MONTH ROW BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS TENURE FROM Have;
您的查询提供:
101,5
101,5
101,5
101,5
101,5
102,4
102,4
102,4
102,4
我假设你想按月计算?