Если у roll up есть "500", я бы хотел, чтобы результаты отображали "Grand Total", а не там, где в настоящее время отображается "null",
Кроме того, я не уверен, как я могу добавить предложение WHERE для просмотра только транзакций, которые были обработаны в течение 2018 года?
Есть идеи? Спасибо
select date_format(TRANSACTION_DATE, '%M') AS MONTH,
SUM(SALES_AMOUNT) TOTAL
FROM SALES
GROUP BY DATE_FORMAT(TRANSACTION_DATE, '%M') WITH ROLLUP
January 160.00
June 100.00
May 240.00
Null 500.00
Это работает для меня:
http://www.sqlfiddle.com/#!18/8647e/4
SELECT
isnull(datename(month, [Date1]), 'Total'),
SUM([Amount])
FROM Table1
GROUP BY datename(month , [Date1]) WITH ROLLUP
Результат:
| | |
|---------|-----|
| January | 160 |
| June | 100 |
| May | 240 |
| Total | 500 |
coalesce()
илиifnull()
для замены нулевых значенийdate_format(TRANSACTION_DATE, '%M')
вы также можете использоватьMONTH(TRANSACTION_DATE)
.. Для WHERE вы можете использоватьWHERE YEAR(TRANSACTION_DATE) = 2018