我将数据保存为1-2-4-5,我希望将它们分成第一个响应= 1,第二个响应= 2,第三个响应= 4,第四个响应= 5,第五个响应= 7。在列中作为varchar(max)并且需要报告这些。有没有办法将它们分成5个不同的行或排序列表?并非所有的列都有5个部分,有些列有更多,有些则更少,所以如果答案灵活,那就更好了。
我正在使用SSRS 2008R2和SQL Server 2008R2
提前谢谢
答案 0 :(得分:2)
declare @Testdata table ( Data varchar(max))
insert @Testdata select '1¬2¬4¬5¬7'
;with tmp(DataItem, Data) as (
select LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from @Testdata
union all
select LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from tmp
where Data > ''
)
select * from tmp