2016-07-20 2 views
-1

일부 열이있는 테이블 테이블이 있고 다른 테이블의 열로 열 값을 변환하려고합니다.행을 새 테이블의 열로 변환

내 요구 사항의 스크린 샷 하나를 첨부하고 있습니다.

위의 표는 내 기본 표이며 아래 표는 내 필수 표입니다. enter image description here 감사합니다.

+0

사례 통계를 사용하여 mysql을 열로 간단하게 피벗시킬 수 있습니다. –

+0

@Jens - 죄송합니다. 실수로 SQL Server 2012를 사용하고 있습니다. –

+1

[SQL 서버의 행을 열로 효율적으로 변환] (http : // stackoverflow. com/questions/15745042/efficient-convert-rows-to-columns-in-sql-server) – Ash

답변

0

을 나는 회전이 충분히 될 것 같아요

SELECT * 
FROM (
    SELECT [Action], [Key], 'Old' + Old as [a], OldValue as [Value] 
    FROM Table1 
    UNION ALL 
    SELECT [Action], [Key], 'New' + New, NewValue 
    FROM Table1 
    ) as p 
PIVOT (
    MAX([Value]) FOR [a] IN ([OldCol1],[OldCol2],[OldCol3],[NewCol1],[NewCol2],[NewCol3],[NewCol45]) 
) as pvt 

출력 : 다음 'Old 많은 및 New` 값이있는 경우

Action Key OldCol1 OldCol2 OldCol3 NewCol1 NewCol2 NewCol3 NewCol45 
I  123 NULL NULL NULL NULL NULL NULL Sun 
U  123 Dog  Cat  Honey Dog  Mouse Bee  NULL 

당신은 동적 SQL이 필요

+0

덕분에 지금은 내 실수였습니다. –

+0

내 대답이 도움이된다면 좋을 것입니다! :) – gofr1

1

제안 된 복제물이 거기에있는 길을 열어 주지만 실제로는 피벗 해제하고 다음과 같이 피벗해야합니다.

(. 아, 그리고 DDL은 감사 이미지를 게시하고 우리가 입력 및/또는 추측에 저장하지 마십시오.)

CREATE TABLE #Test(Action char, [Key] INT, Old varchar(5), OldValue varchar(5), New varchar(5), NewValue varchar(5)); 

INSERT INTO #Test VALUES 
('U', 123, 'Col1','Dog','Col1','Dog'), 
('U', 123, 'Col2','Cat','Col2','Mouse'), 
('U', 123, 'Col3','Honey','Col3','Bee'), 
('I', 123, NULL,NULL,'Col45','Sun'); 


SELECT PVT.Action 
     ,PVT.[Key] 
     ,PVT.OldCol1 
     ,PVT.OldCol2 
     ,PVT.OldCol3 
     ,PVT.NewCol1 
     ,PVT.NewCol2 
     ,PVT.NewCol3 
     ,PVT.NewCol45 FROM (
SELECT [Action] 
     ,[Key] 
     ,Label 
     ,Value 
FROM #Test 
CROSS APPLY (VALUES ('Old'+Old, OldValue), ('New'+New, NewValue)) c(label, value) 
)src 
PIVOT 
(
MAX(VALUE) FOR Label IN (OldCol1, NewCol1, OldCol2, NewCol2, OldCol3, NewCol3, NewCol45) 
)PVT 
ORDER BY PVT.Action Desc 


Action Key   OldCol1 OldCol2 OldCol3 NewCol1 NewCol2 NewCol3 NewCol45 
------ ----------- ------- ------- ------- ------- ------- ------- -------- 
U  123   Dog  Cat  Honey Dog  Mouse Bee  NULL 
I  123   NULL NULL NULL NULL NULL NULL Sun 

(2 row(s) affected) 
+0

이것은 또한 작동하지만 grof1의 솔루션은 내가 갇혀있는 곳 근처에있는 것이 었습니다. 어쨌든 고마워요. –