У меня есть 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
....
Мне нужно решение с идентификатором, датой 2011, датой 2010, датой 2009 с соответствующими ставками (или нулевым/пустым, если для этого года не существует записи ставки), заполняющей поля даты.
ID Date2011 Date2010 Date2009
1 1.2 1.8 null
2 null null 0.2
3 null 0.9 null
Я изо всех сил пытался заставить стержень работать с этим, и теперь я пытаюсь использовать операторы case.
Это то, что у меня есть до сих пор:
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