नमूना डेटा और वांछित परिणाम मदद करेंगे। जब आप "अलग" कहते हैं, तो मुझे लगता है कि आपका मतलब समूह द्वारा है। ध्यान दें, WHERE क्लॉज में आपको Order.OrderDate डालने की आवश्यकता नहीं है यदि आप सुनिश्चित करते हैं कि आपके @from &@to params का समय घटक सही ढंग से सेट किया गया है (प्रत्येक पूरे दिन को शामिल करने के लिए)। तुलना के बाईं ओर कास्ट ऑपरेशन लागू करना कभी भी अच्छा विचार नहीं है।
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)