2017-02-25 45 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」是您的參數。

作爲說明:在您的示例中,您似乎已按倒序字母順序分配了新值。因此,您需要descorder by

+0

非常感謝!我想保留表格的順序。它是否因訂單而改變? – Avi

+0

字母順序僅僅是一個例子,不能是真實的情況。 – Avi

+1

@Avi。 。 。將'order by id'添加到查詢中。 –