2017-02-25 10 views
0

私はインパラ(TBL1)のテーブルを持っています。このテーブルには、最初の共通文字の数が異なる別の名前が含まれています。この表には約3Mのレコードが含まれています。テーブルに新しい属性を追加して、各共通の最初の文字にクラスが追加されるようにしたいと思います。 DENSE_RANKと同じですが、最初の文字が動的に表示されます。同じ最初の文字数は、p=3文字(p =パラメータ)より小さくしないでください。ここで
はテーブルと必要な結果の例です:インパラの一般的な文字によるレコードの効率的な分類

| ID | Attr1  | New_Attr1 | Some more attribute... 
+-------+--------------+-------------+----------------------- 
| 1 | ZXA-12  | 1   | 
| 2 | YL3300  | 2   | 
| 3 | ZXA-123  | 1   | 
| 4 | YL3400  | 2   | 
| 5 | YL3-aaa  | 2   | 
| 6 | TSA 789  | 3   | 

...

答えて

1

これは、あなたがやりたいのか?

select t.*, 
     dense_rank() over (order by strleft(attr1, 3)) as newcol 
from . . .; 

"3"はパラメータです。

注意:この例では、アルファベット順の逆順で新しい値を割り当てたようです。したがって、order byにはdescが必要です。

+0

ありがとうございます!私はそのままテーブルオーダーをしたいと思います。それは注文のために変わるのですか? – Avi

+0

アルファベット順は単なる例であり、実際には存在してはいけません。 – Avi

+1

@Avi。 。 。クエリに 'order by id'を追加します。 –

関連する問題