Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Rozróżnianie według daty zamówienia i produktów SQL Server 2008

Pomogłyby przykładowe dane i pożądane wyniki. Kiedy mówisz „różnić według”, zakładam, że masz na myśli grupowanie według. Zwróć uwagę, że w klauzuli WHERE nie musisz przesyłać Order.OrderDate, jeśli upewnisz się, że składnik czasowy parametrów @from i @to jest ustawiony poprawnie (aby uwzględnić każdy cały dzień). Nie jest dobrym pomysłem stosowanie operacji rzutowania po lewej stronie porównania.

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. Jak znaleźć nazwę procedury składowanej na podstawie wyszukiwania nazw tabel przy użyciu SQL Server 2008?

  2. Błąd serwera SQL:nie można wykonać procedury zdalnej

  3. Jak przyspieszyć wstawianie zbiorcze do MS SQL Server za pomocą pyodbc?

  4. Potrzebuję zapytania sql, aby pogrupować według nazwy, ale zwrócić inne pola na podstawie najnowszego wpisu

  5. Które ustawienia zapewniają domyślny format daty i godziny programu SQL Server?