2017-05-04 42 views
1

我有一個SQL Server數據庫表,其中需要將Vaccination Name列的值轉換(pivot?)到各自的列中。然後我需要使用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; 

或者因爲你使用SQL Server,你可以使用旋轉功能:

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