2016-07-15 38 views
1

我有這個當前示例數據集中更新字段順序根據具體的情況

NEW_ID Name OLD_ID New_Name 
    123 Hello XYZ 
    124 How  XYZ 
    125 Are  XYZ 
    126 My  ABC 
    127 Name ABC 
    128 Is  ABC 
    129 Alex ABC 

我的目標是名稱字段修改到一個新的命名規則將被存儲在New_Name-即Hello_Part_1,How_Part_2,Are_Part_3所有這些記錄共享一個OLD_ID - 在這種情況下是XYZ。同樣,使用ID等於ABC的My_Part_1,Name_Part_2,Is_Part_3,Alex_Part_4等。

我正在使用SQL Lite導入.CSV文件。

命名約定如下所示 - NAME_PART_X其中X按OLD_ID的「組」中的記錄數增加。

回答

1

SQL不能順序工作;你必須獨立地爲每一行表達操作。

您需要的數字是具有與當前行的新ID相同或更小的新ID的舊ID相同的行數。 這可以用一個correlated subquery來計算:

UPDATE MyTable 
SET New_Name = Name || '_Part_' || 
       (SELECT COUNT(*) 
       FROM MyTable AS T2 
       WHERE T2.OLD_ID = MyTable.OLD_ID 
        AND T2.NEW_ID <= MyTable.NEW_ID);