当前位置:首页 » 编程语言 » sql多行变成多列
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql多行变成多列

发布时间: 2022-12-15 08:37:31

sql 如何动态多行转多列

使用存储过程。
方法如下:
1、先查询出表里面的列名称
2、行列转换

举例
1、查询student字段名
SELECT
a.colorder as _colOrder, --字段序号
a.name as _colName --字段名
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<> 'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sys.extended_properties g
on a.id=g.major_id AND a.colid = g.minor_id
where d.name='student' --所要查询的表
order by a.id,a.colorder

2、行列转换
SELECT
MAX (CASE WHEN SetupID = 1 THEN SetupName ELSE NULL END ) AS [1],
MAX (CASE WHEN SetupID = 2 THEN SetupName ELSE NULL END ) AS [2],
MAX (CASE WHEN SetupID = 3 THEN SetupName ELSE NULL END ) AS [3],
MAX (CASE WHEN SetupID = 4 THEN SetupName ELSE NULL END ) AS [4]
......
FROM table

㈡ sql多行多列数据怎么弄成一行多列

做个带参数的存储过程就行

㈢ SQL server把少列多行拼接成多列多行

SELECT[date],
MAX(CASEWHEN[id]='a'THEN[金额]ELSENULLEND)AS'a.金额',
MAX(CASEWHEN[id]='a'THEN[笔数]ELSENULLEND)AS'a.笔数',

MAX(CASEWHEN[id]='b'THEN[金额]ELSENULLEND)AS'b.金额',
MAX(CASEWHEN[id]='b'THEN[笔数]ELSENULLEND)AS'b.笔数',

MAX(CASEWHEN[id]='c'THEN[金额]ELSENULLEND)AS'c.金额',
MAX(CASEWHEN[id]='c'THEN[笔数]ELSENULLEND)AS'c.笔数',

MAX(CASEWHEN[id]='d'THEN[金额]ELSENULLEND)AS'd.金额',
MAX(CASEWHEN[id]='d'THEN[笔数]ELSENULLEND)AS'd.笔数',

MAX(CASEWHEN[id]='e'THEN[金额]ELSENULLEND)AS'e.金额',
MAX(CASEWHEN[id]='e'THEN[笔数]ELSENULLEND)AS'e.笔数'
FROM表XXXGROUPBY[date];

㈣ 怎么样将sql查询出来的多行数据变成一行多列

sql查询结果如果只有一条,就会显示一行,行数代表了结果数,列数的多少取决于你所查询的字段数。

㈤ sql多行多列合并成一行多列,

您好利用分析函数 sum max min 等均可实现此功能(oracle 中 空值不参与大小比较(11g是这样的 其他版本需要你自己测试相爱))
如:
select 产品, max(标价),max(二标价),max(三标价) from table group by 产品;
或者
select 产品, sum(标价)),sum(二标价),sum(三标价) from table group by 产品;

㈥ sql 行数据转换成多列

用存储过程和临时表实现吧,代码给你了
CREATE PROCEDURE [dbo].[sp_test]
AS
BEGIN
SET NOCOUNT ON;

DECLARE @A nvarchar(50)
DECLARE @B nvarchar(200)
DECLARE @Btmp nvarchar(200)

DECLARE @charindex int

CREATE TABLE #tem
(
colA nvarchar(50) NULL,
colB nvarchar(50) NULL,
)

DECLARE curRecord CURSOR FOR
SELECT cola,colb from testtable
OPEN curRecord

FETCH NEXT FROM curRecord INTO @A,@B

WHILE @@fetch_status=0
BEGIN
SELECT @charindex=charindex(',',@B),@Btmp=@B
while (@charindex)>0
begin
insert into #tem
select @A,substring(@Btmp,1,@charindex-1)

select @Btmp=substring(@Btmp,@charindex+1,len(@Btmp))
select @charindex=charindex(',',@Btmp)
end
FETCH NEXT FROM curRecord INTO @A,@B --将游标向下移1
END

CLOSE curRecord --关闭游标
DEALLOCATE curRecord

select * from #tem

DROP TABLE #tem

END

㈦ sql中一对多关系的查询结果的多行转换成一行多列

1、创建测试表,

create table test_fee(userid number, feeid number, fee number);