2014-10-08 50 views
1

如果性別,出生日期(dob)和郵政編碼相同,我想匹配屬於同一客戶的記錄。如果字段匹配,則在排序後替換值

實現此目的的一種方法是對記錄進行排序,然後說「將newid創建爲id,將newid替換爲下面一行中的id,如果郵編與下面的郵編相同,性別是相同的和出生日期是一樣的「。

最合適的SQL命令是什麼 - 我不確定如何讓SQL檢查「下面的行」並替換字段是否相同?

在下面的例子中,newid是最終結果的樣子。那些具有相同性別,dob和郵編的人獲得相同的ID。

非常感謝

CREATE TABLE mytable(
    id INTEGER(2) NOT NULL PRIMARY KEY 
, customerid INTEGER(1) 
, sex INTEGER(1) 
, dob DATE 
, postcode VARCHAR(7) 
, newid INTEGER(1) 
); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (1,1,1,'19320413','AB1 2CD',1); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (2,2,1,'19320413','EF3 4GH',2); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (3,3,1,'19320413','AB1 2CD',1); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (4,4,1,'19320413','AB1 2CD',1); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (10,6,2,'19420930','IJ5 6KL',3); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (11,7,2,'19420930','IJ5 6KL',3); 
INSERT INTO mytable(id,customerid,sex,dob,postcode,newid) VALUES (12,8,2,'19430930','IJ5 6KL',4); 
+1

您正在使用什麼數據庫?你在說什麼'id'?字段'id'是一個主鍵,所以它不能在不同的行上覆制。 – 2014-10-08 10:14:48

回答

0

如果你是甲骨文,然後解析函數是你所需要的(例如DENSE_RANK())

相關問題