我的作业要求我找出“每个日期开了多少张发票?”
我有点困惑,向我的教授求助。她给我发了一封电子邮件,询问我如何回答这个问题: “每种类型和版本的炉子有多少个? 对于一个挑战,但没有额外的积分,包括总数的炉子。“
这是她发给我的问题:
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 子句,并从 微软的一篇文章开始。它说,ROLLUP 条款类似于 CUBE 条款,但它与 CUBE 条款有以下区别:
因此,我决定用 CUBE 替换查询中的 ROLLUP,看看会发生什么。他们产生了相同的结果。我想这就是我困惑的地方。
看起来,如果您使用的是我在这里提到的查询类型,那么这两个子句之间似乎没有任何实际区别。是吗?或者,我是不是听不懂你在说什么?当我读完微软的那篇文章时,我曾经想过,使用 CUBE 子句时,我的结果应该是不同的。