Сделать переменную Dynami c достаточно изменить значение на основе месяца - PullRequest
0 голосов
/ 10 января 2020

Есть ли способ иметь переменную внутри переменной l oop через 12 чисел при каждом вызове? Возможно, я просто недоедаю в SQL l oop logi c. Вот переменная, которая у меня есть, на данный момент я могу заставить ее хранить только число c.

SET @startEnr = (SELECT COUNT(*) 
     FROM Enrollment
     WHERE MONTH(startDate) = 09
     AND active = 1
     AND endYear = 2020

Значение 09 должно содержать 12 значений, как если бы @x = 1 ... 12. Я попытался зациклить это, однако возвращается ошибка, утверждающая, что переменная не может содержать более одного значения. Нужна ли мне функция?

1 Ответ

0 голосов
/ 10 января 2020

Как отметили комментаторы, единственный реальный массив в SQL - это таблица. Я думаю, что вы ищете что-то вроде этого:

CREATE TABLE #mthEnroll (mth int, cnt int)

INSERT INTO #mthEnroll (mth, cnt)
SELECT MONTH(startdate), COUNT(*) 
     FROM Enrollment
     WHEREactive = 1
     AND endYear = 2020
    GROUP BY MONTH(startdate)

DROP TABLE #mthEnroll

Возможно, вам придется немного поработать, если у вас есть возможность месяцев без записей (например, 0 студентов, зачисленных в июле, НЕ будут иметь строка), но если необходимо получить 0, есть другие способы.

...