2015-08-20 9 views
0

Я должен это знать, но по какой-то причине он меня озадачил.SQL Сумма заказов по дате

Этот простой код выводит все заказы на день

USE [K.1] 
Select CreatedAt,Identifier,RoundedPriceSum from StarOrder 
where SiteID = 1 
and OrderType <>2 
and CreatedAt between '2015/01/01' and '2015/08/20' 

CreatedAt является дата, идентификатор является уникальным идентификатором заказа и RoundedPriceSum суммы заказа.

Можно ли изменить код, чтобы обеспечить в общей сложности RoundedPriceSum за day_

+1

Что вы используете? Пожалуйста, отметьте свой вопрос, поэтому нам не нужно гадать. –

ответ

2

Использование GROUP BY:

Select cast(CreatedAt as date) as CreatedDay, SUM(RoundedPriceSum) 
from StarOrder so 
where SiteID = 1 and OrderType <> 2 and 
     CreatedAt >= '2015-01-01' and 
     CreatedAt < '2015/08/20' 
group by cast(CreatedAt as date) 
order by CreatedDay; 

Заметки об изменениях в запросе:

  • Изменены даты, чтобы Стандарт ISO YYYY-MM-DD.
  • Заменил BETWEEN на >= и <. Это лучше подходит для дат со временем.
  • Используйте cast(as date), чтобы удалить компонент времени.
  • 0дальцы добавили ORDER BY, поэтому результаты в порядке возрастания.
1
select s.CreatedAt,s.Identifier,x.tot 
from StarOrder s 
join 
(select CreatedAt,sum(RoundedPriceSum) as tot 
from StarOrder 
where SiteID = 1 
and OrderType <>2 
and CreatedAt between '2015/01/01' and '2015/08/20' 
group by createdat) x 
on x.createdat = s.createdat 
where SiteID = 1 
and OrderType <>2 
and s.CreatedAt between '2015/01/01' and '2015/08/20' 
Смежные вопросы