2014-06-25 76 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

相關問題