Похоже, вы хотите узнать о GROUP BY
? Похоже, вы намереваетесь получить сумму значений заказов в месяц за указанный период времени. Я не думаю, что вам нужен какой-либо процедурный код для этого вообще. Попробуйте:
SELECT concat(year(orderdate),
month(orderdate),
'01') month,
sum(ordertotal) ordertotal
FROM dbo.tb_order
WHERE applicationid = '24b48d78-1fb8-4842-af6d-11c58e940700'
AND orderstatusid IN (10,
20,
30)
AND orderdate >= '20160101'
AND orderdate < '20200301'
GROUP BY year(orderdate),
month(orderdate)
ORDER BY year(orderdate),
month(orderdate);
Также не используйте BETWEEN
на datetime
с, как вы. Вы можете потерять данные, поскольку после 00:00 часов второго операнда больше нет. Используйте <
и следующий день в 00:00 в качестве границы.