Sql server 2008 SQL小计,分组问题
如果您能提供一些SQL小计方面的指导,我将不胜感激。我正在使用SQLServer2008R2 使用的表格:Sql server 2008 SQL小计,分组问题,sql-server-2008,tsql,Sql Server 2008,Tsql,如果您能提供一些SQL小计方面的指导,我将不胜感激。我正在使用SQLServer2008R2 使用的表格: OrderInvoiceHeader.ProvinceCode OrderInvoiceHeader.InvoiceNumber OrderInvoiceHeader.BillToCustomer OrderInvoiceHeader.InvoiceDate OrderInvoiceHeader.InvoiceAmount OrderInvoiceHeader.GstAmount Orde
OrderInvoiceHeader.ProvinceCode
OrderInvoiceHeader.InvoiceNumber
OrderInvoiceHeader.BillToCustomer
OrderInvoiceHeader.InvoiceDate
OrderInvoiceHeader.InvoiceAmount
OrderInvoiceHeader.GstAmount
OrderInvoiceHeader.PstAmount
Customer.BillToCustomer
Customer.CustomerName
CanadaProvinces.ProvinceCode
CanadaProvinces.ProvinceName
我必须在查询时显示:
必须显示每个发票号码、省名称、客户名称、发票日期、发票金额、GstAmount和PSTAMUNT。
必须按ProvinceName进行小计,以包括发票金额、GstAmount和PstAmount之和。
必须对所有省份进行小计,以包括发票金额、GstAmount和PstAmount之和
序列必须是ProvinceName、CustomerName、InvoiceNumber。如我所说-分组集:
select
InvoiceNumber = case grouping(InvoiceNumber) when 1 then '<Total>' else InvoiceNumber end,
ProvinceName = case grouping(ProvinceName) when 1 then '<Total>' else ProvinceName end,
CustomerName = case grouping(CustomerName) when 1 then '<Total>' else CustomerName end,
InvoiceDate = case grouping(InvoiceDate) when 1 then '<Total>' else InvoiceDate, end
sum(InvoiceAmount), sum(GstAmount), sum(PstAmount)
from [table]
group by
grouping sets (
(ProvinceName, InvoiceNumber, CustomerName, InvoiceDate),
(ProvinceName),
() -- grand total
)
您可以使用汇总或多维数据集来实现这一点,但您必须使用分组[column]来过滤掉不需要的聚合。通常小计和分组在报表层的SQL之外处理。只需确保您有一个适当的order by,这样就可以按顺序排列GROUPS READ about GROUP by GROUP SETS我不太明白的是,我必须在Select中包含InvoiceDate作为示例,因此我被迫将其包含在GROUP by中,当使用with rollup时,它将按InvoiceDate提供额外的行小计。“顾客姓名也是如此。”杰米辛森说。那么你不介意接受回答吧