Sql server 行到列-sql 2008
正在学习SQL-我有下表:Sql server 行到列-sql 2008,sql-server,sql-server-2008,Sql Server,Sql Server 2008,正在学习SQL-我有下表: Site1 Totals Status1 20 Status2 5 Status3 15 Status4 145 Status5 1 并且需要转换列和行,添加新列名“Server name”并将行更改为列,以返回以下内容: Server name Status1 Status2 Status3 Status4 Status5 Site1 20 5 15 145 1 有人能帮忙吗
Site1 Totals
Status1 20
Status2 5
Status3 15
Status4 145
Status5 1
并且需要转换列和行,添加新列名“Server name”并将行更改为列,以返回以下内容:
Server name Status1 Status2 Status3 Status4 Status5
Site1 20 5 15 145 1
有人能帮忙吗
谢谢
select ServerName = 'Site1', *
from
(
select Totals, Site1
from Sometable
) d
pivot
(
max(Totals)
for Site1 in (Status1, Status2, Status3, Status4, Status5)
) piv;
编辑:如果需要从Site1列动态加载值,可以通过以下方式执行:
CREATE table #yourtable
([Site1] varchar(20), [Totals] int)
;
INSERT INTO #yourtable
([Site1], [Totals])
VALUES
('Status1', 20),
('Status2', 45),
('Status3', 77),
('Status4', 55)
;
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Site1)
from #yourtable
group by Site1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ServerName=''Site1'', ' + @cols + N' from
(
select Site1, Totals
from #yourtable
) x
pivot
(
max(Totals)
for Site1 in (' + @cols + N')
) p '
exec sp_executesql @query;
PIVOT
会执行此操作。如果有未知数量的可能状态值,请搜索此站点以获取动态数据透视。Site1和Totals是否为您的列标题?完美:)谢谢