我正在清理電子商務網站上的客戶列表。客戶列表在客戶ID和客戶電子郵件之間具有多對多的關係。例如,客戶可以在登錄或匿名時使用同一電子郵件下訂單,結果將是具有相同電子郵件但不同客戶ID的兩個客戶記錄。同樣,客戶可以在登錄時使用兩個不同的電子郵件創建訂單,這將導致具有相同ID但不同電子郵件的客戶記錄。鑑於此,我想根據電子郵件或客戶編號創建具有真正唯一ID的客戶列表。此外,在某些情況下,電子郵件是空白的,因此客戶記錄都有空白的電子郵件,但不同的ID需要被視爲兩個不同的客戶。SQL Server:根據兩列生成唯一的客戶密鑰
所以給出這樣的事情:
CUST_ID CUST_EMAIL
------------------------
123 [email protected]
123 [email protected]
124 [email protected]
125 [email protected]
126
127
128 [email protected]
128 [email protected]
129 [email protected]
我會想產生這樣一個關鍵:
CUST_ID CUST_EMAIL NEW_CUST_KEY
------------------------------------
123 [email protected] 1
123 [email protected] 1
124 [email protected] 2
125 [email protected] 2
126 3
127 4
128 [email protected] 5
128 [email protected] 5
129 [email protected] 5
這是一次性轉換還是可以在不改變現有數據的情況下重現的?我假定基於第一句話進行轉換,那麼爲什麼不在'WHILE'循環中做到這一點。然後,您可以與之前的記錄進行比較,看看是否需要新ID。 – Steve
我將需要每天運行此操作以合併新的客戶記錄,但只要記錄分組正確,爲給定客戶生成的密鑰是否每天都會發生變化並不重要。我很可能每天都會截斷並重新加載目標表,所以任何可用作一次轉換的東西都應該沒問題。 – EvanMPW
就WHILE循環而言,我不認爲只和前一個記錄進行比較是可行的。如果您查看上述示例中的最後一條記錄,如果您之前將其與記錄進行比較,則看起來它需要一個新的密鑰(不同的電子郵件和ID)。但是,它確實與前兩行共享一封電子郵件,這意味着所有三個應該被分組爲具有相同新密鑰的單個客戶。 – EvanMPW