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;