ID、日付、レートの 3 つのフィールドがあります。IDごとに、「履歴」と呼ぶテーブルからの複数の日付と料金があります
ID Date Rate
1 12/12/11 1.2
1 08/10/10 1.8
2 01/01/09 0.2
2 03/12/08 0.5
3 06/01/12 1.1
3 07/20/10 0.9
....
ID、日付 2011、日付 2010、日付 2009 に対応するレート (またはその年のレート エントリが存在しない場合は null/空白) が日付フィールドに入力されるソリューションが必要です。
ID Date2011 Date2010 Date2009
1 1.2 1.8 null
2 null null 0.2
3 null 0.9 null
これでピボットを機能させるのに苦労しており、現在ケースステートメントを使用しようとしています。
これは私がこれまでに持っているものです:
SELECT id, date, rate,
CASE WHEN date <= '12/31/11' AND date >= '1/1/11' THEN rate END AS '2011',
CASE WHEN date <= '12/31/10' AND date >= '1/1/10' THEN rate END AS '2010',
CASE WHEN date <= '12/31/09' AND date >= '1/1/09' THEN rate END AS '2009'
FROM history
ORDER BY id
私が今得ている問題は、それぞれの異なるレートに独自の行があることです。元:
ID Date2011 Date2010 Date2009 1 1.2 null null 1 null 1.8 null 2 null null 0.2 3 null 0.9 null