Получение минимального и максимального года диапазона дат - PullRequest
1 голос
/ 10 августа 2011

У нас есть поле даты в одной из наших таблиц, и мне нужно создать фильтр из этого столбца. Мне нужно получить минимальный год и максимальный год, а затем заполнить годы между ними. Я могу легко создать хранимый процесс, который получает min и max, а затем создать цикл в моем скрипте для достижения этой цели, но мне было интересно, есть ли лучший способ сделать это в sql. Я использую SQL Server 2000.

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Вы можете использовать таблицу чисел / счет. SQL, Вспомогательная таблица чисел

Вот пример с использованием master..spt_values.

select number as [Year] 
from master..spt_values
where number between 2008 and 2011
  and type = 'P'

Результат:

number
------
2008
2009
2010
2011

Просто замените значения в предложении между вашими минимальным и максимальным годом.

0 голосов
/ 10 августа 2011

Вот пример того, как предложение @ Микаэль может быть применено к вашей конкретной проблеме:

SELECT
  v.number AS Year
FROM master..spt_values v
  INNER JOIN (
    SELECT
      YEAR(MIN(Date)) AS MinYear,
      YEAR(MAX(Date)) AS MaxYear
    FROM atable
  ) ON v.number BETWEEN MinYear AND MaxYear
WHERE v.type = 'P'
...