У меня есть 2 столбца в таблице startdate
и enddate
, и мне нужно создать функцию для получения всех ID
, которые лежат между данными даты, переданными в функцию. входные параметры моей функции
@Year int,
@Month int = null,
@Quarter int = null
теперь, если месяц равен null
, мне нужно проверить только дату, что легко, но если указан месяц, как проверить, находится ли он между startdate
и enddate
, или же, если указан @Quarter
, мне нужно проверить, не совпадают ли 3 месяца года с startdate
и enddate
.
То, что я написал до сих пор,
CREATE FUNCTION GetAssociatesEmpID(
@Year int,
@Month int = null,
@Quarter int = null
)
RETURNS TABLE
AS BEGIN
IF @Month IS NOT NULL -- Monthly Statistics
BEGIN
END
ELSE IF @Quarter IS NOT NULL -- Quarterly Statistics
BEGIN
END
ELSE -- Yearly Statistics
BEGIN
return SELECT ID FROM Table WHRER @Year>=YEAR(startdate) AND @Year<=YEAR(enddate)
END
END
Пожалуйста, помогите мне с условием с месяцем и кварталом
Квартал имеет 4 возможных диапазона входных значений от 1 до 4, а диапазон месяцев от @Quarter*3-3
до @Quarter*3
.
YEAR(@Year)
не имеет смысла,@Year
ужеINT
- person Lamak   schedule 24.08.2016startdate
иenddate
. Второй интервал определяется параметрами процедуры. Преобразуйте ваши параметры@Year
,@Month
,@Quarter
в две правильные даты, используя несколькоIFs
, а затем проверьте наложение. - person Vladimir Baranov   schedule 24.08.2016