2015-09-30 77 views
0

我有以下查询,它的工作原理。 我只需要在给出的总计在SQL中添加总计到总数

SELECT ItemType.Description, 
     SUM(Price * Quantity)as 'TOTAL' 
FROM [MIETRAK].[dbo].[PurchaseOrderReceivingLine] 
join Item 
    on PurchaseOrderReceivingLine.ItemFK = item.ItemPK 
join ItemType 
    on Item.ItemTypeFK = ItemType.ItemTypePK 
join PurchaseOrderReceiving 
    on PurchaseOrderReceivingLine.PurchaseOrderReceivingFK = PurchaseOrderReceiving.PurchaseOrderReceivingPK 
where InvoiceDate >= dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) 
    and InvoiceDate < dateadd(wk, datediff(wk, 0, getdate()), 0) 
group by ItemType.Description 
+1

为什么你不计算任何报表工具/代码总计您使用呈现数据? –

+0

你可以把你的查询结果放在一个临时表中,然后在你的临时表中放入一个总数。然后,你只需将它们与你的总数联合在一起。 – PeonProgrammer

回答

1

使用CTEUNION与总计行的行底部添加一行。

with CTE 
(
    SELECT ItemType.Description, 
     SUM(Price * Quantity)as 'TOTAL' 
     FROM [MIETRAK].[dbo].[PurchaseOrderReceivingLine] 
    join Item on PurchaseOrderReceivingLine.ItemFK = item.ItemPK 
    join ItemType on Item.ItemTypeFK = ItemType.ItemTypePK 
    join PurchaseOrderReceiving on PurchaseOrderReceivingLine.PurchaseOrderReceivingFK = PurchaseOrderReceiving.PurchaseOrderReceivingPK 
    where 
    InvoiceDate >= dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) 
    and InvoiceDate < dateadd(wk, datediff(wk, 0, getdate()), 0) 
    group by ItemType.Description 
) 

SELECT Description,TOTAL FROM CTE 
UNION 
SELECT 'GRAND TOTAL',SUM(TOTAL) FROM CTE 
0

使用您的返回结果作为临时结果

;WITH TEMP AS(
SELECT ItemType.Description, SUM(Price * Quantity)as 'TOTAL' 
FROM [MIETRAK].[dbo].[PurchaseOrderReceivingLine] 
join Item 
    on PurchaseOrderReceivingLine.ItemFK = item.ItemPK 
join ItemType 
    on Item.ItemTypeFK = ItemType.ItemTypePK 
join PurchaseOrderReceiving 
    on PurchaseOrderReceivingLine.PurchaseOrderReceivingFK = PurchaseOrderReceiving.PurchaseOrderReceivingPK 
where InvoiceDate >= dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) 
    and InvoiceDate < dateadd(wk, datediff(wk, 0, getdate()), 0) 
group by ItemType.Description 
) 
SELECT * FROM TEMP 
UNION 
SELECT 'BIG SUM',SUM(TOTAL) TEMP