[英]Teradata auto-increment column taking different ranges as starting point while inserting records at different time periods
[英]Counters in Teradata while inserting records
我正在尝试以以下格式在表中插入记录
Name Amount Date Counter
A 100 Jan 1 1
A 100 Jan2 1
A 200 Jan 10 2
A 300 Mar 30 3
B 50 Jan 7 1
C 20 Jan 7 1
有人可以告诉我用于生成Counter字段值的sql吗? 每当数量更改时,计数器值应增加,而名称更改时,计数器值应重置。
您需要的是DENSE_RANK函数。 不幸的是,它不是在TD14.10之前本地实现的,但是可以使用嵌套的OLAP函数编写:
SELECT
Name
,Amount
,date_col
,SUM(flag)
OVER (PARTITION BY Name
ORDER BY date_col
ROWS UNBOUNDED PRECEDING) AS "DENSE_RANK"
FROM
(
SELECT
Name
,Amount
,date_col
,CASE
WHEN Amount = MIN(Amount)
OVER (PARTITION BY Name
ORDER BY date_col
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
THEN 0
ELSE 1
END AS flag
FROM dropme
) AS dt;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.