2014-02-26 3 views
0

Course_Code 및 피난처의 마지막 문자를 기반으로하는 열에 표시하고자하는 행의 수강 과목 데이터가 포함 된 레코드가 있습니다. 이것을위한 방법을 찾을 수 없었습니다.T-SQL - 행에 데이터가 표시되도록하려면 어떻게해야합니까?

Course_Code 필드에는 도시를 포함하여 모듈을 가져 오는 순서를 나타내는 시퀀스 문자가옵니다. (A)은 처음으로 B 와야합니다, 다음 C 등

데이터는 다음과 같습니다

: 내가 같이하는 결과를 필요로 무엇

Course_Code Student_ID 
MadridA  123 
ParisB  123 
NewYorkC  123 
HamburgD  123 
HamburgA  456 
ParisB  456 
HamburgC  456 
HamburgD  456 
HamburgA  789 
ParisB  789 
HamburgC  789 
MadridD  789 

은 다음과 같습니다

Student_ID CourseA CourseB CourseC CourseD 
123  MadridA ParisB NewYorkC HamburgD 
456  HamburgA ParisB HamburgC HamburgD 
789  HamburgA ParisB HamburgC MadridD 

내가 봤는데 가능한 솔루션으로 PIVOT을 조사했지만 데이터 값에 SUM 또는 AVG가 포함되지 않은 예제는 찾을 수 없습니다. 적절한 열로 이동하기 만하면 데이터를 변경할 필요가 없습니다.

PIVOT이 내가 필요한 것을 수행 할 예정입니까, 아니면 부러진 패들이있는 잘못된 크릭에 있습니까?

답변

1

결과를 얻으려면 PIVOT 함수를 사용할 수 있지만 데이터가 문자열이므로 max 또는 min 집계 함수를 사용해야합니다.

select student_id, 
    CourseA, CourseB, 
    CourseC, CourseD 
from 
(
    select course_code, student_id, 
    -- append the course letter A, etc to Course to get the new column names 
    col = 'Course'+right(course_code, 1) 
    from yourtable 
) d 
pivot 
(
    max(course_code) 
    for col in (CourseA, CourseB, CourseC, CourseD) 
) piv; 

SQL Fiddle with Demo

+0

Bluefeet를 참조, 이름 옆에 다이아몬드, 나는 그것이 선거가 잘 갔다 걸릴에 따라 다음과 같은 사용할 수 있어야합니다

? :) – christiandev

+0

@christiandev 예, 나는 어제 선출되었습니다 :) – Taryn

+0

축하합니다. 어쨌든 내 투표가 있습니다. 여기에 'Pivot' 질문에 대답하는 것을보고 놀랐습니다. :) – christiandev

관련 문제