Я пытаюсь сделать хороший оператор SQL внутри хранимой процедуры.
Я посмотрел на вопрос о количестве дней, в течение которых происходили события между двумя датами.
Мой пример - заказы на продажу: за какой месяц у нас были заказы на продажу?
Предположим, эта настройка:
CREATE TABLE `sandbox`.`orders` (
`year` int,
`month` int,
`day` int,
`desc` varchar(255)
)
INSERT INTO orders (year, month, day, desc)
VALUES (2009,1,1, 'New Years Resolution 1')
,(2009,1,1, 'Promise lose weight')
,(2009,1,2, 'Bagel')
,(2009,1,12, 'Coffee to go')
Для этих данных результат должен быть равен 3, так как было три дня с продажей.
Лучшее решение, которое я нашел, это как показано ниже.
Тем не менее, создание временной таблицы, считая, что ее отбрасывание кажется избыточным. Это должно быть возможно в одном утверждении.
Кто-нибудь, кто получил "более приятное" решение, чем я?
/ л
SELECT [Year], [Month], [Day]
INTO #Some_Days
FROM Quarter
WHERE Start >= '2009-01-01' AND [End] < '2009-01-16'
GROUP BY [Year], [Month], [Day]
SELECT count(*) from #Some_Days