Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

ऑर्डर की तारीख और उत्पादों से अलग SQL Server 2008

नमूना डेटा और वांछित परिणाम मदद करेंगे। जब आप "अलग" कहते हैं, तो मुझे लगता है कि आपका मतलब समूह द्वारा है। ध्यान दें, 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)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समस्या निवारण में मदद करें SqlException:कनेक्शन पर समयबाह्य समाप्त हो गया, एक गैर-लोड स्थिति में

  2. मैं टी-एसक्यूएल में अल्पविराम के साथ किसी संख्या को कैसे प्रारूपित करूं?

  3. Sql फंक्शन इश्यू किसी फंक्शन के भीतर शामिल अंतिम स्टेटमेंट रिटर्न स्टेटमेंट होना चाहिए

  4. एसएसआईएस में दशमलव क्षेत्रों के साथ कार्य करना

  5. पहले इकाई फ्रेमवर्क कोड का उपयोग करके संग्रहीत कार्यविधियाँ बनाएँ?