当前位置:首页 » 编程语言 » 一行数据拆分多行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'));