Сумма значений SQL день за днем ​​из поля datetime - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть таблица:

Date                    NETTO   VAT
2018-09-18 13:06:48.287 15.00   2.80
2018-07-21 17:32:28.620 8.55    1.60
2018-09-07 12:43:07.487 50.70   9.48
2018-09-07 19:32:06.530 57.20   10.70
2018-09-03 17:12:13.837 79.00   14.77
2018-09-08 14:54:25.367 110.45  20.65
2018-10-01 13:04:53.917 60.90   11.39

Дата: datetime типа как 2018-06-15 12:22:43.312

Я пытался преобразовать datetime в date, но я могу 't посмотреть сумму NETTO и НДС

select 
  CONVERT(date, data_sp, 111) As Date, 
  SUM(w_csb) as NETTO , 
  SUM(w_vat) as VAT 
from 
  sales
Group by 
  data_sp
Order by 
  data_sp

Я бы хотел получить такой результат: сумма день за днем ​​

2018-06-15  3335.75 236.68
2018-06-16  199.00  37.21
2018-06-17  1115.00 232.80

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Либо ответ fa06 должен работать на вас, либо, если вы конвертируете datetime в varchar вместо date, вы получите немного более аккуратный вывод (без нуляd time):

SELECT 
  CONVERT(varchar(10), data_sp, 111) AS Date, 
  SUM(w_csb) AS NETTO, 
  SUM(w_vat) AS VAT 
FROM
  sales
GROUP BY 
  CONVERT(varchar(10), data_sp, 111) 
ORDER BY 
  CONVERT(varchar(10), data_sp, 111) 

Важным моментом является то, что сокращенная дата должна быть в предложениях GROUP BY и ORDER BY, а также SELECT, в противном случае она группируется только по исходная дата, которая все еще включает в себя время, и, следовательно, даты по-прежнему рассматриваются как уникальные значения - и, следовательно, не могут группироваться.

На основании приведенных выше примеров данных мой запрос выведет:

Date        NETTO   VAT
2018/07/21  8.55    1.60
2018/09/03  79.00   14.77
2018/09/07  107.90  20.18
2018/09/08  110.45  20.65
2018/09/18  15.00   2.80
2018/10/01  60.90   11.39

Большинство ваших дат в любом случае появляются только один раз, но, как вы можете видеть, они правильно сгруппировали 2018-09-07.

Рабочая демонстрация (как для моего запроса, так и для запроса fa06): https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=ed0d4ca3ebd8e45e02be41aaf86c2ef4

0 голосов
/ 21 декабря 2018

Вы можете попробовать ниже, используя cast(data_sp as date) для преобразования даты, а также добавить его в group by условие

select cast(data_sp as date) As Date, SUM(w_csb) as NETTO , SUM(w_vat) as VAT 
from sales 
Group by cast(data_sp as date) 
order by cast(data_sp as date)
...