我在单个列中有数据要转置到SQL Server 2012中的单个行。这些数据来自多个表。
请使用帮助使用支点功能。
我的数据如下:
p1
x1
y1
z1
我想将其更改为
p1 x1 y1 z1
答案 0 :(得分:2)
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(SomeColumn) From YourTable Order by 1 For XML Path('')),1,1,'')
Select @SQL = '
Select ' + @SQL + '
From (Select SomeColumn from YourTable ) A
Pivot (max(SomeColumn) For [SomeColumn] in (' + @SQL + ') ) p'
Exec(@SQL);
返回
p1 x1 y1 z1
p1 x1 y1 z1
你想要Col1,Col2,...... ColN
答案 1 :(得分:0)
要在不使用T-SQL数据透视功能的情况下进行转动,您可以这样做:
-- Sample data
DECLARE @yourtable TABLE (col1 char(2), col2 int);
INSERT @yourtable (col1, col2) VALUES ('p1',20),('x1',30),('y1',15),('z1',3),('z1',5);
-- Pivoting without using Pivot
SELECT
p1 = MAX(CASE col1 WHEN 'p1' THEN col2 ELSE 0 END),
x1 = MAX(CASE col1 WHEN 'x1' THEN col2 ELSE 0 END),
y1 = MAX(CASE col1 WHEN 'y1' THEN col2 ELSE 0 END),
z1 = MAX(CASE col1 WHEN 'z1' THEN col2 ELSE 0 END)
FROM @yourtable;
结果:
p1 x1 y1 z1
----------- ----------- ----------- -----------
20 30 15 5