2017-05-04 13 views
1

Vaccination Name列の値をそれぞれの列に変換(ピボット?)する必要があるSQL Serverデータベーステーブルがあります。次に、これらの列に値Vaccination Dateを設定する必要があります。私は多くのプログラマーではなく、私の研究は私のニーズに合ったものを見つけ出していません。ピボット列に別の列の値を設定する

表の例

enter image description here

+2

表示するワクチン接種ごとに複数の日付がありますか? – ollie

+0

@ollie。私はより詳細を提供すべきだった。ワクチン接種の名前を別々の列に入れる必要があるのは、表の各ペットが1つの行しか持たないことです。彼らは現在、複数の。スクリーンショットの例は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を使用しているので、あなたはPIVOT機能を使用することができます:両方が同じを返します

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

関連する問題