我有一个SQL代码在这里我做了,我试图找出如何使用情况和分组功能来代替文字值“所有“为空值的汇总行。我也想过滤以AZ,MI,OH结尾的状态结果。这是编写代码的正确方法吗?使用情况和分组功能,与空汇总行代替文字值值
SELECT AccountDescription AS Account, VendorState, SUM(invoicelineitemamount) as LineItemSum
CASE
WHEN ISNULL THEN '*ALL*'
END
FROM ap.dbo.Vendors
JOIN ap.dbo.Invoices
ON Vendors.VendorID = Invoices.VendorID
JOIN ap.dbo.invoicelineitems
ON Invoices.InvoiceID = InvoiceLineItems.InvoiceID
JOIN ap.dbo.GLAccounts
ON InvoiceLineItems.AccountNo = GLAccounts.AccountNo
WHERE VendorState IN ('AZ', 'MI', 'OH')
GROUP BY AccountDescription, VendorState WITH CUBE
什么设置分组等于1吗?我只是从书中复制它,它没有提供解释它为什么这样做。 – 2014-11-21 00:44:20
@Lisa谢霆锋,分组功能通过多维数据汇总行返回null值,则返回1 – radar 2014-11-21 01:02:54
@RADAR SQL Server 2012的肯定支持CUBE,它尚未删除(未在2014年任)。 ROLLUP在功能上并不等同 - CUBE为所有组合生成汇总行,ROLLUP不会。 – jpw 2014-11-21 01:26:21