所以這ISN」 T A很漂亮的解決方案,但它確實爲你問:
create table #Blah(Prefix nvarchar(5), CR nvarchar(60))
insert into #Blah
values('g', ';#WR_1;#WR_2;#WR_3;#WR_4;#')
insert into #Blah
values('v', ';#WR_3;#WR_4;#')
insert into #Blah
values('j', 'WR_2')
insert into #Blah
values('m', 'WR_1')
insert into #Blah
values('d', ';#WR_3;#WR_4;#')
insert into #Blah
values('f9', 'WR_3')
SELECT Prefix, [WR_1], [WR_2], [WR_3], [WR_4]
FROM(
SELECT Prefix, SUBSTRING(CR+';#', num, CHARINDEX(';#', CR+';#', num) - num) Item, convert(int,NULL) Col
FROM #Blah
inner join Numbers on num <= LEN(REPLACE(CR,' ','|')) AND SUBSTRING(';#' + CR, num, LEN(REPLACE(';#',' ','|'))) = ';#'
WHERE SUBSTRING(CR+';#', num, CHARINDEX(';#', CR+';#', num) - num) > ''
) q
PIVOT (
MAX(Col) FOR Item IN ([WR_1], [WR_2], [WR_3], [WR_4])
) p
drop table #Blah
此查詢使用的表稱爲Numbers
它只是採用了單柱Num
其中每個數字從1到10,000有一行。
我不知道爲什麼有數據的列標題將是填充一個下拉列表,以獲得數據行,只需取下支點,只是使用內部查詢有用,別名q
什麼數據會填充列? –
數據可以爲空,因爲我想在下拉列表中使用這些列名稱。 – vuyy1182