我收到必須加載到規範化表中的非規範化文本文件。將非規範化文件中的數據加載到規範化表中
規格化表:
客戶id - 類別 - 類別2 - 類別3 - 類別4
1 - A - 乙 - C - d
當該歸一化,它應看起來像:
客戶id - 類別
1 - 甲
1 - B
1 - Visual C
1 - d
編寫T-SQL語句以實現此目標的最佳方式是什麼(SQL Server 2008)?
我收到必須加載到規範化表中的非規範化文本文件。將非規範化文件中的數據加載到規範化表中
規格化表:
客戶id - 類別 - 類別2 - 類別3 - 類別4
1 - A - 乙 - C - d
當該歸一化,它應看起來像:
客戶id - 類別
1 - 甲
1 - B
1 - Visual C
1 - d
編寫T-SQL語句以實現此目標的最佳方式是什麼(SQL Server 2008)?
使用UNPIVOT
關鍵字:http://technet.microsoft.com/en-us/library/ms177410.aspx
當然你要替換[文件]帶有某種OPENROWSET查詢,或者使用導入/導出嚮導將數據獲取到一個臨時表。
SELECT CustomerId, Category
FROM
(
SELECT CustomerId, Category, Category2, Category3, Category4
FROM [File]
) tblDenormalized
UNPIVOT
(
Category FOR Column IN
(Category, Category2, Category3, Category4)
) AS unpivot;
完美...謝謝! – Sesame 2010-08-09 18:34:33
我會用一種編程語言遍歷併爲每一行做4次插入..但這對我來說很舒服。 – Fosco 2010-08-09 17:17:55
或者爲每個類別使用一個INSERT查詢。 – 2010-08-09 17:21:18