sql >> Databáze >  >> RDS >> Sqlserver

Liší se datem objednávky a produkty SQL Server 2008

Pomohly by vzorová data a požadované výsledky. Když říkáte „rozlišovat podle“, předpokládám, že máte na mysli skupinu podle. Všimněte si, že v klauzuli WHERE nemusíte přenášet Order.OrderDate, pokud zajistíte, že časová složka vašich parametrů @from &@to je nastavena správně (aby zahrnoval každý celý den). Nikdy není dobrý nápad aplikovat operaci přetypování na levou stranu srovnání.

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. jak změnit formát data v tomto html uživatelském formuláři

  2. Vytváření dotazu mysql pro počítání konkrétních dat pod stejnou tabulkou/řádkem

  3. vybrat všechny sloupce, které nejsou v jiné tabulce laravel 5.5

  4. Jak ukládat značky do databáze pomocí MySQL a PHP?