Я создаю SQL-запрос для бизнес-отчета. Мне нужно иметь в отчете как промежуточные итоги (сгруппированные по номеру файла), так и общие итоги.
Я вхожу на неизвестную территорию SQL, так что это всего лишь первая попытка. Сделанный мной запрос почти работает. Единственная проблема заключается в том, что записи группируются - они должны быть разделены в отчете.
Вот мои примерные данные:
FileNumber Date Cost Charge
3 Dec 22/09 5 10
3 Jan 13/10 6 15
3B Mar 28/10 1 3
3B Mar 28/10 5 10
Когда я запускаю этот запрос
SELECT
CASE
WHEN (GROUPING(FileNumber) = 1) THEN NULL
ELSE FileNumber
END AS FileNumber,
CASE
WHEN (GROUPING(Date) = 1) THEN NULL
ELSE Date
END AS Date,
SUM(Cost) AS Cost,
SUM(Charge) AS Charge
FROM SubtotalTesting
GROUP BY FileNumber, Date WITH ROLLUP
ORDER BY
(CASE WHEN FileNumber IS NULL THEN 1 ELSE 0 END), -- Put NULLs after data
FileNumber,
(CASE WHEN Date IS NULL THEN 1 ELSE 0 END), -- Put NULLs after data
Date
Я получаю следующее:
FileNumber Date Cost Charge
3 Dec 22/09 5 10
3 Jan 13/10 6 15
3 NULL 11 25
3B Mar 28/10 6 13 <--
3B NULL 6 13
NULL NULL 17 38
Что я хочу :
FileNumber Date Cost Charge
3 Dec 22/09 5 10
3 Jan 13/10 6 15
3 NULL 11 25
3B Mar 28/10 1 3 <--
3B Mar 28/10 5 10 <--
3B NULL 6 13
NULL NULL 17 38
Я ясно вижу , почему записи группируются, но я не знаю, как их разделить, при этом возвращая промежуточные итоги и итоговую сумму.
Я немного зелен, когда дело доходит до выполнения сложных SQL-запросов, подобных этому, поэтому, если я использую WITH ROLLUP
неправильный подход к проблеме, предложите несколько предпочтительных альтернатив - у вас нет чтобы написать весь запрос для меня, мне просто нужно какое-то направление. Спасибо!