Мое задание попросило меня выяснить, "сколько счетов-фактур написано для каждой даты?"
Я немного застрял и попросил моего профессора о помощи. Она отправила мне по электронной почте запрос, который бы ответил на вопрос: "Сколько печей каждого типа и версии было построено? Для вызова, но без дополнительных очков, укажите общее количество печей.
Это был запрос, который она мне прислала:
SELECT STOVE.Type + STOVE.Version AS 'Type+Version'
, COUNT(*) AS 'The Count'
FROM STOVE
GROUP BY STOVE.Type + STOVE.Version WITH ROLLUP;
Итак, я подкрепил этот запрос, пока он не удовлетворил мои потребности. Вот что я придумал:
SELECT InvoiceDt
, COUNT(InvoiceNbr) AS 'Number of Invoices'
FROM INVOICE
GROUP BY InvoiceDt WITH ROLLUP
ORDER BY InvoiceDt ASC;
И он вернул следующие результаты, которые я хотел.
В любом случае, я решил прочитать статью ROLLUP и начал статью из Microsoft. В нем говорилось, что предложение ROLLUP аналогично предложению CUBE, но оно отличается от предложения CUBE следующим образом:
- CUBE создает набор результатов, который показывает агрегаты для всех комбинаций значений в выбранных столбцах.
- ROLLUP создает набор результатов, который показывает агрегаты для иерархии значений в выбранных столбцах.
Итак, я решил заменить ROLLUP в моем запросе CUBE, чтобы узнать, что произойдет. Они дали одинаковые результаты. Я предполагаю, что там, где я запутался.
Похоже, если вы используете тип запроса, который я здесь, что между двумя статьями нет никакой практической разницы. Это правильно? Или я что-то не понимаю? Я думал, когда я закончил читать статью Microsoft, мои результаты должны были быть разными, используя предложение CUBE.