2017-12-02 4 views
1

내 목표는이를 변환하는 것입니다행을 열로 SQL 변환

표 :

ID Day Status 
101 1 N 
101 2 P 
101 3 N 
101 4 P 
101 5 R 
102 1 P 
102 2 P 
102 3 R 
102 4 R 
102 5 R 
103 2 N 
103 3 N 
103 4 P 
103 5 P 
104 3 P 
104 4 P 
104 5 R 
105 4 N 
105 5 N 

이 속으로 :

표 2 :

ID 1 2 3 4 5 
101 N P N P R 
102 P P R R R 
103  N N P P 
104   P P R 
105    N N 

이 가능합니까? 당신의 "날"제한된 범위 (? 1..7)이면

답변

0

액세스, 당신은 사용할 수 있습니다

TRANSFORM First([Status]) AS Status 
SELECT [ID] 
FROM Table1 
GROUP BY [ID] 
PIVOT [Day]; 
1

은 다음 네, 조금 지루하지만 해 드리겠습니다 :

SELECT Id, MAX(CASE Day WHEN 1 THEN Status END) AS "1" 
     , MAX(CASE Day WHEN 2 THEN Statue END) AS "2" 
FROM Table GROUP BY Id ORDER BY Id 

사건은 각 열에 상태 또는 NULL 중 하나를 반환합니다. MAX()는이를 단일 행으로 축소합니다.

0

필자는 피벗 테이블 기능을 사용하여 필요를 충족시킬 수 있다고 생각합니다. 도움이되기를 바랍니다.

SELECT * 

FROM 
(SELECT ID, status, day 
    FROM yourtable) AS SourceTable 
PIVOT 
(
max(status) 
FOR day IN (1,2,3,4,5) 
) AS PivotTable;