Dữ liệu mẫu và kết quả mong muốn sẽ hữu ích. Khi bạn nói "khác biệt bởi" tôi cho rằng bạn muốn nói đến nhóm theo. Lưu ý, trong mệnh đề WHERE, bạn không cần truyền Order.OrderDate nếu bạn đảm bảo rằng thành phần thời gian của thông số @from &@to của bạn được đặt chính xác (bao gồm cả ngày). Không bao giờ là một ý tưởng hay nếu áp dụng phép toán ép kiểu cho phía bên trái của phép so sánh.
SELECT --cast(Orders.OrderDate as date),
Products.ProductId
SUM(OrderDetails.OrderDetailQuantity) AS totalOrdered,
FROM Orders
INNER JOIN OrderDetails ON Orders.OrderId = OrderDetails.OrderId
INNER JOIN Products ON OrderDetails.ProductId = Products.ProductId
where Orders.OrderDate between cast(@from as date) AND cast(@to as date)
GROUP
BY --cast(Orders.OrderDate as date),
Products.ProductId
-- to illustrate:
declare @From datetime = '1/1/2000 10:30:22',
@To datetime = '1/3/2000 9:11:31'
declare @orders table (i int, dt datetime)
insert into @orders
values(1, '1/1/2000 8:00'),(2, '1/2/2000 10:00'), (3, '1/4/2000 3:00')
-- only returns i=2
select *
from @orders
where dt between @From and @To
-- returns i=1 & i=2
select *
from @orders
where dt between cast(@From as date) and cast(@To as date)