2017-11-13 12 views
2

関数をTERADATAでどのように使用できるかを、以下の結果セットを使用して判断しようとしています。ここで私が試したものです:Row_Number with Teradata GROUPBY

select col1, col2, ROW_NUMBER() OVER (ORDER by col2 ) 
    FROM 
    (select col1, col2 
    from TABLE 
    ORDER BY col2) A 

結果セット期待

38 11/14/2016 1 
38 11/15/2016 2 
38 11/16/2016 3 
38 11/17/2016 4 
38 11/18/2016 5 
38 11/19/2016 6 
39 11/20/2016 7 
39 11/21/2016 8 
39 11/22/2016 9 
39 11/23/2016 10 
39 11/24/2016 11 
39 11/25/2016 12 

あなたは PARTITION BYを追加する必要が
Col1 Col2 Col3 
38 11/14/2016 1 
38 11/15/2016 1 
38 11/16/2016 1 
38 11/17/2016 1 
38 11/18/2016 1 
38 11/19/2016 1 
39 11/20/2016 2 
39 11/21/2016 2 
39 11/22/2016 2 
39 11/23/2016 2 
39 11/24/2016 2 
39 11/25/2016 2 
+0

どのバージョンのTeradataを使用していますか? – zarruq

+0

14.10.06.10 D2D – Warz

+0

これで 'DENSE_RANK()'はうまくいくはずです – zarruq

答えて

4

SELECT col1, 
     col2, 
     ROW_NUMBER() OVER (PARTITION BY col1 ORDER by col2) AS row_index 
FROM TABLE 
ORDER BY col2 

まあ、それはのように思えますあなたは実際に必要とします:

SELECT col1, 
     col2, 
     DENSE_RANK() OVER (ORDER by col1) AS row_index 
FROM TABLE 
ORDER BY col2 
+0

ありがとう@GordonLinoff – Lamak

+0

私はcol1でグループ化しcol2で並べ替え、その順番で行番号を作成します。パーティションが私の結果セットを変更するようですか? – Warz

+0

@Warz結果セットをどのように変更していますか? – Lamak