Существующие данные:SQL СНП попеременным ГОД
RowId Title Year 1 Aaa 2002 2 Bbb 2003 3 Ccc 2004 4 Ddd 2004 5 Eee 2005 6 Fff 2006 7 Ggg 2007 8 Hhh 2008
У меня есть необходимость для извлечения данных из таблицы на основе входного параметра, год следующим образом:
1. Select all records matching param year
2. Select all records matching param year +1
3. Select all records matching param year -1
4. Select all records matching param year +2
5. Select all records matching param year -2
6. Select all records matching param year +3
7. Select all records matching param year -3
Ожидаемые результаты (при условии, что в этом году - 2005 год):
RowId Title Year 5 Eee 2005 6 Fff 2006 3 Ccc 2004 4 Ddd 2004 7 Ggg 2007 2 Bbb 2003 8 Hhh 2008 1 Aaa 2002
Я смог достичь этого, используя несколько SELECT на одном столе с UNION, но интересно, есть ли лучший способ сделать это.
Цените свою помощь!
Это где предложение действительно многословно: 'где Year between (@year - 3) и (@yea r + 3) 'должен делать. Кроме того, порядок заказа не достаточно. Рассмотрим случай, когда @year = 2006. 'ABS (@year - 2005)' и 'ABS (@year - 2007)' оба дают 1, поэтому они рассматриваются как равные по порядку by и поэтому могут быть возвращены в любой заказ. Если вы выберете второй критерий выбора года, это должно сделать это. –
@BenThul, да, вы правы. Это было опубликовано через панель, поэтому я не смог ее протестировать. –