2014-06-25 97 views
1

我将数据保存为1,2,4,5,7,我想将它们分为第一个响应= 1,第二个响应= 2,第三个响应= 4 ,第四个响应= 5,第五个响应= 7.它们在列中作为varchar(max)并需要报告这些。有没有办法将它们分成5个不同的行或排名列表?并非所有的列都有5个部分,有些更多,有些更少,所以如果答案是灵活的,那么这会很好。将varchar(max)字符串分隔到sql服务器中的列表中

我使用SSRS 2008 R2和SQL Server 2008R2

预先感谢您

回答

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 
+0

辉煌!谢谢 – user3774310

+0

如果我想在查询中添加另一列,我会在哪里放置它?例如,如果我想在@Testdata中插入一条select语句,并带回一个疑问? – user3774310

相关问题