2017-02-22 44 views
0

我有如下記錄SQL的拆分單元格的值入行

"NO" "EXECQTY" "PRNO" 
"WDNSLR/1" "10" "~PRSLR/00001~,~PRSLR/00002~,~PRSLR/00003~,~PRSLR/00004~" 

,並希望像這樣顯示

"NO" "EXECQTY" "PRNO 

"WDNSLR/1" "10" "PRSLR/00001" 

"WDNSLR/1" "10" "PRSLR/00002 

"WDNSLR/1" "10" "PRSLR/00003 

"WDNSLR/1" "10" "PRSLR/00004 

注意
雙引號用來顯示區分列值

+0

是此專欄名稱「否」「EXECQTY」「PRNO」 – TheGameiswar

+0

是和PRNO包含多個值 –

回答

0

好的,所以你真正需要的是將PRNO列的內容拆分成行和將其加入原始表格。

這將是表:

declare @t table (NO varchar(20), EXECQTY varchar(20), PRNO varchar(100)) 
insert @t values ('WDNSLR/1', '10', '~PRSLR/00001~,~PRSLR/00002~,~PRSLR/00003~,~PRSLR/00004~') 

,這將是代碼:

select t.no, t.execqty, replace(f.item, '~', '') as prno 
from @t t 
cross apply (
    select 
     item = ltrim(rtrim(substring(t.prno, [number], 
     charindex(',', t.prno + ',', [number]) - [number]))) 
    from (select number = row_number() over (order by name) from sys.all_objects) as x 
    where number <= len(t.prno) and substring(',' + t.prno, [number], len(',')) = ',' 
) f 

這是自包含的,但我會建議使用實數表,而不是創建序列每飛行時間。而且,子查詢可以很容易地轉換爲UDF。

+0

謝謝!成功工作。 –

+0

很高興聽到!那麼沒有接受它的特殊原因? – dean