2017-03-07 50 views
0

我相信我有一個非常直接的問題,但無法通過搜索網站上以前提出的問題找到我正在尋找的答案。爲等值連續運行添加計數器列

我正在嘗試向我的數據添加一個計數器列,例如下面的示例中。我希望它跟蹤我的數據的特定列中的單個值的連續出現次數。雖然,理想情況下,計數器會按組(ID#)的功能,它不是必需的,作爲一個連續的重複值的兩個ID之間的可能性基本上是0

# ID Date Value Consecutive_Repeat 
    # 1 01-01 a  0 
    # 1 01-02 b  0 
    # 1 01-03 b  1 
    # 1 01-04 a  0 
    # 2 01-01 x  0 
    # 2 01-02 x  1 
    # 2 01-03 x  2 
    # 2 01-04 a  0 
    # 3 01-01 b  0 
    # 3 01-02 b  1 
    # 3 01-03 a  0 
    # 3 01-04 b  0 
    # 4 01-01 c  0 
    # 4 01-02 c  1 
    # 4 01-03 c  2 
    # 4 01-04 c  3 

回答

2

這不是一個簡單的ROW_NUMBER更復雜一點,你可以申請Teradata數據擴展標準SQL,RESET WHEN

Row_Number() 
Over (PARTITION BY id 
     ORDER BY date 
     RESET WHEN Min(value) -- start whenever there's a a new value 
       Over (PARTITION BY id 
         ORDER BY date 
         ROWS BETWEEN 1 Preceding AND 1 Preceding) <> value) -1 
0

你只使用row_number功能。

ROW_NUMBER() over (partition by id,value order by date) 

如果您希望它從零開始,只需從中減去一個即可。

+0

嗨安德魯。我嘗試了上面的方法,但它的輸出結果與預期略有不同。在「值」列取某個值(例如「A」)的情況下,下次出現值「A」時,計數器將值加1,與值是連續重複還是不連續無關重複。 –