我有这个当前的示例数据集
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
我的目标是将Name字段修改为新的命名约定,以存储在New_Name中,即Hello_Part_1,How_Part_2,Are_Part_3,其中所有这些记录共享一个OLD_ID - 在本例中为XYZ。同样,使用My_Part_1,Name_Part_2,Is_Part_3,Alex_Part_4等ID,其ID等于ABC。
我使用SQL Lite导入.CSV文件。
命名约定如下 - NAME_PART_X,其中X增加该组'组内的记录数量。 OLD_IDs。
答案 0 :(得分:1)
SQL无法按顺序工作;你必须为每一行独立表达操作。
您想要的数字是具有相同旧ID的行数,该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);