我正在努力处理将行转换为列的查询。挑战在于每次运行选择时“代码”的数量可能会有所不同。
所以select的结果如下:
******** COPA:LN, LBUL:LN, LSIL:LN
COPA:LN 1 , 0.9 , 0.9
LBUL:LN 0.9 , 1 , 0.9
LSIL:LN 0.9 , 0.9 , 1
非常感谢!!!
CREATE TABLE #myTable
([code1] varchar(15), [code2] varchar(15), [cor] decimal(18,14));
INSERT INTO #myTable
([code1] , [code2], [cor] )
VALUES
('COPA:LN' , 'COPA:LN' , 1),
('LBUL:LN' , 'COPA:LN' , 0.9),
('LSIL:LN' , 'COPA:LN' , 0.918356332594718),
('COPA:LN' , 'LBUL:LN' , 0.93607492424868),
('LBUL:LN' , 'LBUL:LN' , 1),
('LSIL:LN' , 'LBUL:LN' , 0.960430401044714),
('COPA:LN' , 'LSIL:LN' , 0.918356332594718),
('LBUL:LN' , 'LSIL:LN' , 0.960430401044714),
('LSIL:LN' , 'LSIL:LN' , 1)
答案 0 :(得分:0)
您可以在MSSQL 2012中创建数据透视表。
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
-- Pivot table with one row and five columns
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
答案 1 :(得分:0)
尝试动态支点
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(code1)
from #myTable
group by code1
order by code1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT * from #t
pivot
(
max(cor)
for code1 in (' + @cols + N')
) p '
exec sp_executesql @query;