我繼承了一個表(誰沒有,對吧?),有看起來像這樣的數據:治療多發性分隔符分隔字段重複行
Item | Properties | Quantity
--------------------------------------------------------------------
Shirt | button-down,polo,sleeveless | 4,5,8
在短期內,我想創建一個視圖,但最終我想將數據導出表中的一個新版本時,時間允許和有它更像是:
Item | Properties | Quantity
--------------------------------------------------------------------
Shirt | button-down | 4
Shirt | polo | 5
Shirt | sleeveless | 8
從本質上講,採取多列組(我想象還會有其他的表那裏有更多的列比兩個具有這種行爲)已知是分隔符和bre將它們分爲不同的行?收集到的其他不同於此的行將在它們之間共享,如本例中的Item。這些類型之間的逗號數是統一的。
編輯:我以前在答案中給出的函數How to convert comma separated NVARCHAR to table records in SQL Server 2005?,這是目前我有:
select distinct data.item, tmptbl.[String] from
data cross apply [ufn_CSVToTable](data.properties, ',') tmptbl ...
這工作在單柱背景,但應用該功能,第二列(數量在這種情況下)徹底會產生所有可能的性質和數量的組合,對吧?事實上,是的,當我嘗試時,確實導致了這種情況。看起來我需要一個光標或類似的符號來有效地分解成單獨的屬性行[i] |數量[我],將嘗試和構建。這或者可能只是選擇數據並在應用程序端分割它。
類教學SQL剛剛結束。我在最後幾分鐘看到了關於sql/tsql的多個未定義的問題,其中沒有一個顯示他們自己嘗試解決的代碼。請包括**你自己嘗試過的地方,遇到問題的地方以及確切而確切的問題**,否則你的問題不能回答。 –
好的,謝謝。將更新爲包含(儘管它只允許以這種方式打破單個列)。 – Robert
您是使用SQL Server 2005還是剛剛提到它?使用適當的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。 – HABO