當前位置:首頁 » 編程語言 » 一行數據拆分多行sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

一行數據拆分多行sql

發布時間: 2023-05-02 05:01:07

1. sql 一行拆多行

10G及以上:WITH t AS (
SELECT 1 str1,'a,b,d,e,f' str2 FROM al
)
SELECT 1,regexp_substr(str2,'[^,]+',1,ROWNUM) FROM t CONNECT BY ROWNUM<6

其中 with 語句是構造數據的。

2. 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)

3. SQL資料庫語句如何將一行變多行(sql多行數據轉為一行多列)

用一個循環。

先用參數取到到底要變成多少行,和單價

declare@tint

declare@salnvarchar(8)

根據需運猛求或實際情況將應變為多少行這旁橡橋個烤取給變數@t,單價取給@sal

設置循環的起始數值

declare@iint

set@i=1

開始循環如御

while(@i<=@t)

begin

--將單行的數據插入需要的表

insertinto()

values()

--循環參數自增

set@i=@i1

end

4. sql2000 表中一列內容拆分轉多行語句

--搭建環境

create table #(a int,b varchar(60))

insert into # select 1,'123,456,xxx,789' union all select 2,'321,213,sss,985'

select * from #

go


------------------------------測試---------------------------------------------

--update組成查詢字元串

update # set b=';'+b+';'

update # set b=replace(b,';','''')

update # set b=replace(b,',',''',''')

go

--創建中間表

create table #tmp(a int identity(1,1),co1 varchar(10),co2 varchar(10),co3 varchar(10),co4 varchar(10))

go

--如果#表中行數太多,可能會超過8000的長度,可以考慮用游標替換這部分

declare @sql varchar(8000)

set @sql=''

select @sql=@sql+b+' union all select ' from #

select @sql='select '+left(@sql,len(@sql)-17)

select @sql='insert into #tmp(co1,co2,co3,co4) '+@sql

print @sql

exec(@sql)

select * from #tmp

---------------------------------

select a,co1 from #tmp union all

select a,co2 from #tmp union all

select a,co3 from #tmp union all

select a,co4 from #tmp

order by a


5. sql server語句 單行數字數據拆分成多行

CreateTAbleT
(
RoomIDVArchar(10),
BedNumint
)

InsertintoTvalues('1000',2)
Insertinto則晌Tvalues('1011',1)
InsertintoTvalues('1012',陵前2)
InsertintoT尺盯清values('1013',4)

--如果BedNum小於等於2047
SelectT.*,numberfromTCrossjoinmaster.dbo.spt_valuesB
wheretype='P'andnumber<=BedNumandnumber>0

--如果BedNum小於等於32767
withCT
AS
(
SelectRoomID,BedNum,1AsnumberfromT
unionall
SelectRoomID,BedNum,number+1fromCTwherenumber<BedNum
)
Select*fromCT
orderbyRoomID
OPTION(MAXRECURSION32767)

6. sql 怎麼把一個欄位的值分成多行

declare定義一個變數 @str 這個變數的屬性為 varchar(100) 將'a.bb.ccc' 賦給變數 @str 下面的意思是從master(資料庫的名字)中的spt_values(表名)查出欄位為 col 的數據,同時這個是有條件的,where後面就是具體的條件:type=1同時 欄位numb

7. 如何用SQL語句將數據一行變成多行呢

截斷數據,在新增分隔符即可。
放大招
指定索引號,進行數據截取,返回處理後的字元串數組
string str =你的數據
str.substring(你想分的長度)你自己列印一個轉換符就好了

8. SQL一行多列數據分解成多行數據

selecta.*from
(
select省份,編號,姓名,手機1from表名
unionall
select省份,編號,姓名,手爛薯孫機2as手機1飢鏈from表手薯名
unionall
select省份,編號,姓名,手機3as手機1from表名
)asa
orderbya.省份,a.編號,a.姓名

9. sql一行拆分多行記錄

看個例子 改改再用 應該沒問題
QL> select * from t00;

ID ACHAR
---------- ----------
1 ab,ac,ad
1 cc,cf
2 bb,bc,be

SQL> select * from (select id,regexp_substr(achar,'[^,]+',1,level) achar from t00 connect by level<=length(achar)-length(regexp_replace(achar,',',''))+1) group by id,achar order by id ;

ID ACHAR
---------- --------------------
1 ab
1 ac
1 ad
1 cc
1 cf
2 bb
2 bc
2 be

已選擇8行。

10. sql 語句怎麼將一行拆分成兩行

先創建spilt方法,然後調用就行。
1.
--創建function
create or replace function split
(
p_list varchar2,
p_sep varchar2 := ','
) return type_split pipelined
is
l_idx pls_integer;
v_list varchar2(50) := p_list;
begin
loop
l_idx := instr(v_list,p_sep);
if l_idx > 0 then
pipe row(substr(v_list,1,l_idx-1));
v_list := substr(v_list,l_idx+length(p_sep));
else
pipe row(v_list);
exit;
end if;
end loop;
return;
end split;

2.select * from table(split('曹xx,中XX'));