Sql 插入记录时Teradata中的计数器
我正在尝试以下面的格式在表中插入记录Sql 插入记录时Teradata中的计数器,sql,teradata,Sql,Teradata,我正在尝试以下面的格式在表中插入记录 Name Amount Date Counter A 100 Jan 1 1 A 100 Jan2 1 A 200 Jan 10 2 A 300 Mar 30
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
有人能告诉我生成计数器字段值的sql吗。
计数器值应在金额更改时递增,在名称更改时重置。您需要的是一个稠密的秩函数。不幸的是,在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;