[英]Counters in Teradata while inserting records
I am trying to insert records in a table in the below format 我正在尝试以以下格式在表中插入记录
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
Could someone tell me the sql for generating the value for the Counter field . 有人可以告诉我用于生成Counter字段值的sql吗? The counter value should increment whenever the amount changes and reset when the name changes. 每当数量更改时,计数器值应增加,而名称更改时,计数器值应重置。
What you need is a DENSE_RANK function. 您需要的是DENSE_RANK函数。 Unfortunately it's not natively implemented before TD14.10, but it can be written using nested OLAP-functions: 不幸的是,它不是在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.