繁体   English   中英

插入记录时Teradata中的计数器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM