2010-06-15 5 views
-1

표준 SQL2005/2008에서 매트릭스 행 옮김 (행이 열과 행이됩니다)이 가능합니까? 어떻게 행 < > 열 전혀없이 약매트릭스 트랜스 포즈 TSQL

1 4 7 1 2 
2 5 8 3 4 
3 6 9 5 6 
4 6 8 5 6 
5 7 9 6 7

 
1 2 3 4 5 
4 5 6 6 7 
7 8 9 8 9 
1 3 4 5 6 
2 4 5 6 7

변경?

고정 행 수를 고려해 봅시다.

답변

0
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Result]') AND type in (N'U')) 
DROP TABLE [dbo].[Result] 
GO 

CREATE TABLE [dbo].[Result](
    [RN] [int] NULL, 
    [1] [int] NULL, 
    [2] [int] NULL, 
    [3] [int] NULL, 
    [4] [int] NULL, 
    [5] [int] NULL 
) ON [PRIMARY] 

GO 

insert into Result 
select 1,11,12,13,14,15 
union all 
select 2,21,22,23,24,25 
union all 
select 3,31,32,33,34,35 
union all 
select 4,41,42,43,44,45 
union all 
select 5,51,52,53,54,55 

select * from Result 


;WITH Preresult AS 
(SELECT RN AS Row, 
    Col, 
    Val 
FROM Result 
UNPIVOT (Val FOR Col IN ([1],[2],[3],[4],[5])) unpvt 
) 
--select * from Preresult 
--Transform array into matrix 
SELECT 
    Col as Row, 
    [1], 
    [2], 
    [3], 
    [4], 
    [5] 

FROM 
    (
     SELECT Row, Col, Val FROM Preresult) t1 
     PIVOT 
     (MAX(Val) 
     FOR Row IN ([1],[2],[3],[4],[5]) 
     ) AS pvt 
ORDER BY Row;-->replace Col for column sorting 

출처 :이 답변에 잘못이 무엇인지 http://www.devx.com/dbzone/Article/40223/1763?supportItem=5

+0

, 그것은 성공적으로 테스트했습니다. 내가 왜 이걸 가지고 있는지 설명해주십시오. – rmdussa

+0

귀하의 답변은 코드 작동 방식에 대한 설명을 제공하지 않으므로 아마 투표가 실패한 이유 일 수 있습니다. – afuzzyllama

0

데이터 양식 인 경우 당신은 당신의 질문을 포맷 할 수 있지만 변환 A는 간단하다

CREATE TABLE matrix (Row int NOT NULL, Column int NOT NULL, Value <datatype> NOT NULL) 

SELECT Row AS Column 
     ,Column AS Row 
     ,Value 
FROM matrix