2010-08-09 13 views
5

Recibo un archivo de texto desnormalizado que debe cargarse en una tabla normalizada. tablaCarga de datos del archivo desnormalizado en una tabla normalizada

desnormalizado:

CustomerID - Categoría - Category2 - Categoría3 - Category4
1 - A - B - C - D

Cuando esto se normaliza, se debe parecerse a:

CustomerID - Categoría
1 - Un
1 - B
1 - C
1 - D

¿Cuál es la mejor manera de escribir una instrucción T-SQL para lograr esto (SQL Server 2008)?

+0

Usaría un lenguaje de programación para repetir y hacer 4 inserciones para cada línea ... pero eso es lo que es cómodo para mí. – Fosco

+0

O use una consulta INSERT para cada categoría. –

Respuesta

6

Utilice la palabra clave UNPIVOT: http://technet.microsoft.com/en-us/library/ms177410.aspx

Naturalmente, usted querrá reemplazar [Archivo] con algún tipo de consulta OpenRowSet o utilizar el asistente de importación/exportación para obtener los datos en una tabla temporal.

SELECT CustomerId, Category 
FROM 
(
    SELECT CustomerId, Category, Category2, Category3, Category4 
    FROM [File] 

) tblDenormalized 
UNPIVOT 
(
    Category FOR Column IN 
    (Category, Category2, Category3, Category4) 
) AS unpivot; 
+0

Perfecto ... ¡Gracias! – Sesame

Cuestiones relacionadas