2017-05-04 2 views
1

Vaccination Name 열의 값을 각각의 열로 변환 (피벗?)해야하는 SQL Server 데이터베이스 테이블이 있습니다. 그런 다음 해당 열을 Vaccination Date의 값으로 채워야합니다. 나는 프로그래머가 아니며 나의 연구는 나의 필요에 맞는 것을 발견하지 못했다.다른 열의 값으로 채우기 피벗 열

표 예

enter image description here

+2

예방 접종마다 표시 할 날짜가 여러 개인가요? – ollie

+0

@ollie. 나는 더 자세한 내용을 제공해야했다. 백신 접종 이름을 별도의 열로 가져와야하는 이유는 표의 각 애완 동물이 하나의 행만 가질 필요가 있기 때문입니다. 그들은 현재 여러 개가 있습니다. 스크린 샷의 예는 http://imgur.com/a/eaEq5입니다. 감사! – user7963586

+0

각 애완 동물/백신 조합의 최대 날짜를 원하십니까? 광견병 백신에 애완 동물에게 여러 항목이 있다면 어느 것이 맞습니까? – ollie

답변

0

각 애완 동물을위한 각 예방 접종에 대한 최대 날짜를 얻을 수있는 몇 가지 방법이 있습니다. 가장 간단한 집계 함수와 조건부 논리의 일종을 사용하는 것이 아마도 :

select 
    Pet_Name, 
    Bordetella = max(case when Vaccination_Name = 'Bordetella' then Vaccination_Date end), 
    CanineDistemper = max(case when Vaccination_Name = 'Canine Distemper' then Vaccination_Date end), 
    Rabies = max(case when Vaccination_Name = 'Rabies' then Vaccination_Date end) 
from <table> 
group by Pet_Name; 

또는 당신이 PIVOT 기능을 사용할 수 있습니다 SQL 서버를 사용하고 있기 때문에 :

select Pet_name, 
    Bordetella, [Canine Distemper], Rabies 
from 
(
    select 
    Pet_Name, 
    Vaccination_Name, 
    Vaccination_Date 
    from <table> 
) d 
pivot 
(
    max(Vaccination_Date) 
    for Vaccination_Name in (Bordetella, [Canine Distemper], Rabies) 
) piv; 

모두 동일한를 반환합니다 당신을위한 결과. 나는 심지어 당신이 놀 수있는 demo을 만들었습니다.

+0

굉장! 고맙습니다! – user7963586

관련 문제