㈠ sql 2012 一行拆多行
比較簡單
1、首先以【,】為間隔符,拆分每行為多行
2、然後拆分其他行,然後用拆分後的行號和ID進行關聯
這樣就可以實現
㈡ SQL資料庫 怎麼將一行數據變成多行
用一個循環。
先用參數取到到底要變成多少行,和單價
declare
@t
int
declare
@sal
nvarchar(8)
根據需求或實際情況將應變為多少行這個烤取給變數@t,單價取給@sal
設置循環的起始數值
declare
@i
int
set
@i=1
開始循環
while(@i<=@t)
begin
--將單行的數據插入需要的表
insert
into(……)
values(……)
--循環參數自增
set
@i=@i+1
end
㈢ sql如何把行拆分為幾行
如此問題,我也只能這樣貼例子了,如不能解決,可以繼續聯系
--分拆列值
--原著:鄒建
--改編:愛新覺羅.毓華(十八年風雨,守得冰山雪蓮花開)2007-12-16廣東深圳
/*
有表tb,如下:
idvalue
----------------------
1aa,bb
2aaa,bbb,ccc
*/
--欲按id,分拆value列,分拆後結果如下:
/*
idvalue
-------------------
1aa
1bb
2aaa
2bbb
2ccc
*/
--1.舊的解決方法(sqlserver2000)
selecttop8000id=identity(int,1,1)into#fromsyscolumnsa,syscolumnsb
selectA.id,substring(A.[values],B.id,charindex(',',A.[values]+',',B.id)-B.id)
fromtbA,#B
wheresubstring(','+A.[values],B.id,1)=','
droptable#
--2.新的解決方法(sqlserver2005)
createtabletb(idint,valuevarchar(30))
insertintotbvalues(1,'aa,bb')
insertintotbvalues(2,'aaa,bbb,ccc')
go
selectA.id,B.value
from(
selectid,[value]=convert(xml,'<root><v>'+replace([value],',','</v><v>')+'</v></root>')fromtb
)A
outerapply(
selectvalue=N.v.value('.','varchar(100)')fromA.[value].nodes('/root/v')N(v)
)B
droptabletb
/*
idvalue
-----------------------------------------
1aa
1bb
2aaa
2bbb
2ccc
(5行受影響)
*/
㈣ SQL資料庫語句如何將一行變多行
用一個循環。
先用參數取到到底要變成多少行,和單價
declare @t int
declare @sal nvarchar(8)
根據需求或實際情況將應變為多少行這個烤取給變數@t,單價取給@sal
設置循環的起始數值
declare @i int
set @i=1
開始循環
while(@i<=@t)
begin
--將單行的數據插入需要的表
insert into(……)
values(……)
--循環參數自增
set @i=@i+1
end
㈤ SQL server 一行拆多行
;WITH CTE AS
(
SELECT cname,dqty1,dqty1 AS row
FROM TID
UNION ALL
SELECT cname,dqty1,row-1
FROM CTE
WHERE row>1
)
SELECT * FROM CTE
ORDER BY CTE.cname,CTE.dqty1,CTE.row
OPTION (MAXRECURSION 0)