2010-08-09 17 views
5

Ich erhalte eine denormalisierte Textdatei, die in eine normalisierte Tabelle geladen werden muss.Laden von Daten aus denormalisierten Datei in eine normalisierte Tabelle

Denormalisierte Tabelle:

CustomerID - Kategorie - Kategorie 2 - Kategorie 3 - Kategorie4
1 - A - B - C - D

Wenn diese normalisiert wird, sollte es wie folgt aussehen:

CustomerID - Kategorie
1 - A
1 - B
1 - C
1 - D

Was ist der beste Weg, eine T-SQL-Anweisung zu schreiben, um dies zu erreichen (SQL Server 2008)?

+0

Ich würde eine Programmiersprache verwenden, um durchzulaufen und 4 Einsätze für jede Zeile zu machen. Aber das ist genau das, was für mich bequem ist. – Fosco

+0

Oder verwenden Sie eine INSERT-Abfrage für jede Kategorie. –

Antwort

6

Verwenden Sie das UNPIVOT Stichwort: http://technet.microsoft.com/en-us/library/ms177410.aspx

Natürlich möchten Sie [Datei] mit irgendeiner Art von OpenRowset Abfrage ersetzen oder den Import/Export-Assistenten verwenden, um die Daten in eine temporäre Tabelle zu erhalten.

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

Perfekt ... Danke! – Sesame

Verwandte Themen