所以这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