Либо ответ 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