2012-08-23 53 views
1

我的要求是這樣的。我有3列& 1排。SQL查詢將1值拆分爲3行

Column A -> Value a 
Column B -> Value b 
Column C -> Value 123 

我必須拆分C列中的值,並從中獲取3行,並從另一列中複製值。我必須得到3行,它應該是這樣的:

Column A -> Value a , a , a 
Column B -> Value b , b , b 
Column C -> Value 1, 2, 3 

任何想法?

+0

搜索 '支點條款'。這會幫助你一點,並從哪裏開始給你一個想法。另外,你使用的是什麼sql-server版本? –

+0

謝謝!我使用的是SQL Server 2012 ... – Nenad

+0

不錯,從2005年開始soported從句,我想.. –

回答

6

試試這個:

create table test(cola varchar(10),colb varchar(10),colc varchar(10)) 

insert into test select 'a','b','123' 


    ;WITH CTE AS(
    select cola,colb,LEFT(colc,1) colc,RIGHT(colc,len(colc)-1) as rem from test 
    union all 
    select cola,colb,LEFT(rem,1) colc,RIGHT(rem,len(rem)-1) as rem from CTE 
    where LEN(rem) >= 1 
    ) 
    select cola,colb,colc from CTE 
+1

+1 - This可以正常工作,但是我會在查詢結尾添加「OPTION(MAXRECURSION 100)」或其他值的子句 – Lamak

+0

如果columnC中的值長度超過100,該怎麼辦? – AnandPhadke

+1

這只是一個例子。實際上,如果您不添加該提示,則默認值爲100,因此您當前的查詢僅限於此。如果你不想限制遞歸級別,那麼你需要添加'OPTION(MAXRECURSION 0)' – Lamak