2012-09-11 36 views
0

我有一個問題,我不能想出一個好方法來解決它,這是使用SQLServer 2008R2。合併重複的客戶端和銷售

我有3個表

Client, Invoice, Car 

客戶是重複n次,但每個客戶都有一張票,一個產品。

所以我試圖鞏固客戶(具有唯一標識符),現在我的問題是如何更新產品和票證上的參考字段。

**Client** 

[Nombre] 
     ,[Apellido_Paterno] 
     ,[Apellido_Materno] 
     ,[Sexo] 
     ,[Estado_Civil] 
     ,[Fecha_Nacimiento] 
     ,[RFC] 
     ,[Saludo] 
     ,[Persona] 
     ,[Razon_Social] 
     ,[Direccion] 
     ,[Colonia] 
     ,[Municipio_Delegacion] 
     ,[Estado] 
     ,[Codigo_Postal] 
     ,[Lada_Casa] 
     ,[Telefono_Casa] 
     ,[Ext_Telefono_Casa] 
     ,[Lada_Oficina] 
     ,[Telefono_Oficina] 
     ,[Ext_Telefono_Oficina] 
     ,[Telefono_Celular] 
     ,[Email_Personal] 
     ,[Vehiculo_Actual_Anterior] 
     ,[Marca_Actual_Anterior] 
     ,[AnioModelo_Actual_Anterior] 
     ,[Color_Actual_Anterior] 
     ,[Escolaridad] 
     ,[Venta_Id] 
     ,[Nombre1] 
     ,[Nombre2] 

**Invoice** 

[Factura_Cliente] 
     ,[Factura_Distribuidor] 
     ,[Precio_Base_Vehiculo] 
     ,[Precio_Accesorios] 
     ,[Precio_Vehiculo_DeContado] 
     ,[Descuento] 
     ,[Incentivo_Calculado] 
     ,[Fecha_Entrega_DelVehiculo] 
     ,[Fecha_Factura_Cliente] 
     ,[Clave_Distribuidor] 
     ,[Seguro_Gratis] 
     ,[Clave_Promocion] 
     ,[Tipo_Venta] 
     ,[Unidad_de_Intercambio] 
     ,[Venta_Id] 

**Car** 

[Modelo] 
     ,[Marca] 
     ,[AnioModelo] 
     ,[Basico] 
     ,[Cabecera] 
     ,[Version] 
     ,[Color_Exterior] 
     ,[Color_Interior] 
     ,[VIN] 
     ,[Motor] 
     ,[Transmision] 
     ,[Origen] 
     ,[Basico_Linea_Modelo] 
     ,[Venta_Id] 

我可以鞏固客戶,(即使他們對各自領域的差異),但我找不到這樣的有效的解決方案。

編輯:客戶端上的第一列顯示重複,而第二列是與票據和產品匹配的編號。

+0

您嘗試過什麼?你能發表一個查詢嗎?沒有關係,如果它不起作用,是一個起點,也許錯誤很容易解決。如果你發佈了一些示例數據,它會更好地測試並給你一個更好的答案 – Yaroslav

+0

我還沒有做過一個查詢,我想首先考慮一些想法,我可以使用存儲過程來收回id並使用一分鐘聚合通過相同的客戶,但這需要我做一段時間或光標。 – Enrique

+0

您能否發佈實際的表結構? –

回答

1

我會再做兩個表。

一個用於新的統一客戶端(所有字段與普通客戶端相同) 以及舊客戶端和新客戶端之間的映射表。

該映射表應存儲舊映射表的ID,以及映射到的映射表作爲新映射表。

從這裏它很容易。根據地圖表中的當前舊ID更新其他表格。

+0

儘管這是一個好主意,但到目前爲止,每個客戶端的重複數最多爲1,000(仍在進行批量插入)。 – Enrique