Вот мой запрос SQL, который в настоящее время дает почасовые данные о заказе на текущую дату. Здесь мне нужно подсчитать порядок, следуя условию, если я добавлю это, я получаю ошибку подзапроса после 11:00, пожалуйста, помогите мне решить проблему.
После SQL запроса на который я выполняю:
DECLARE @intervalMinutes int = 60
DECLARE @schedule table (
myId int primary key identity,
startTime time,
endTime time
)
DECLARE @startTime time= '12:00:00 AM';
DECLARE @endTime time='11:00:00 PM';
;WITH CTE AS
(
SELECT @startTime st
UNION ALL
SELECT DATEADD(MINUTE,@intervalMinutes,st)
FROM cte
WHERE st < DATEADD(MINUTE,@intervalMinutes,st)
)
INSERT INTO @schedule(startTime,endTime)
SELECT st, DATEADD(MINUTE,@intervalMinutes,st)FROM cte
SELECT CONVERT(varchar(10), startTime, 100) + ' - ' + CONVERT(varchar(10), endTime , 100) AS TimeSlots,
ISNULL((SELECT CASE WHEN ISNULL(O.isAfterDiscount,0) != 0 THEN ((O.SubTotal - Total_Discount) + O.Total_Tax)
ELSE ((O.SubTotal + O.Total_Tax) - Total_Discount)
END AS OrderTotal FROM [dbo].[Order] AS O WHERE O.Order_Status='COMPLETED' AND
(O.CreatedDate >= CAST(CONVERT(varchar(20), GETUTCDATE(),101) + ' ' + CONVERT(varchar(8), startTime, 108) as datetime))
AND (O.CreatedDate <= CAST(CONVERT(varchar(20), GETUTCDATE(),101) + ' ' + CONVERT(varchar(8), REPLACE(endTime,'00:00:00.000','23:59:59.999'), 108) as datetime))),0) AS TotalSales
FROM @schedule
При выполнении запроса возникает следующая ошибка:
Msg 512, уровень 16, состояние 1, строка 22 Подзапрос вернул более одного значения. Это недопустимо, если подзапрос следует за =,! =, <, <=,>,> = Или когда подзапрос используется как выражение.
Следующие результаты запроса, которые мне нужно отобразить :
Пожалуйста, расскажите мне об этом.