2012-09-11 18 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