gpt4 book ai didi

sql-server - 在 SQL Server 中将多列转变成行?

转载 作者:行者123 更新时间:2023-12-03 02:32:05 24 4
gpt4 key购买 nike

我有一个包含这样数据的表格

create table temp
(
colName varchar(50),
name varchar(50),
icon varchar(150),
totalcount int
)

insert into temp values ('Eng1', 'Following', 'followingicon.png', 1564)

insert into temp values ('Eng2','Total Followers', 'followericon.png', 500)

insert into temp values ('Eng3','Direct Messages', 'messageicon.png', 800)

如何选择并使数据显示为

End Result

其中 Eng1、Eng2 和 Eng3 为列标题

这是我到目前为止所得到的,但它只完成了第一级。我需要获得所有三个级别

DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.colName)
FROM temp c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')


set @query = 'SELECT ' + @cols + ' from
(
select colName
, totalcount
from temp
) x
pivot
(
max( totalcount)
for colName in (' + @cols + ')
) p'

execute(@query)

我使用的是 SQL Server 2008。

感谢您的帮助!

最佳答案

这里有一个方法:

DECLARE @cols   AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.colName)
FROM #temp c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')


SET @query = 'SELECT ' + @cols + ' FROM
(
SELECT y.*
FROM #Temp t
CROSS APPLY
(
VALUES (t.colname,CONVERT(VARCHAR(150),name),''name''),
(t.colname,icon,''icon''),
(t.colname,CONVERT(VARCHAR(150),totalcount),''totalcount'')
) y (colName, value, Data)
) x
PIVOT
(
MAX(Value)
FOR colName IN (' + @cols + ')
) p'

EXECUTE(@query)

关于sql-server - 在 SQL Server 中将多列转变成行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com