2016-02-14 1 views
1

J'ai une table qui contient les détails de la commande. Comment puis-je créer une ligne à la fin qui totalise tous mes sous-totaux?SQL Server crée ligne grand total

SELECT 
    o.order_id, o.itemDescription as Description, 
    o.quantity_shipped as [Quantity], 
    o.itemCost as [Price each], 
    (o.quantity_shipped * CAST(o.itemCost as float)) as [Sub Total] 
FROM 
    dbo.order_items o 

Répondre

2

Cela vous donnera le total par arrêté Id

SELECT o.order_id, SUM((o.quantity_shipped * CAST (o.itemCost as float))) as [TotalByOrderId] 
    FROM dbo.order_items o 
    GROUP BY o.order_id 

Cela vous donnera grand total

SELECT SUM((o.quantity_shipped * CAST (o.itemCost as float))) as [GrandTotal] 
FROM dbo.order_items o 
+0

Parfait, merci :) – user2055729

2

Une façon (pas le plus sage performance) peut être le suivant:

;WITH CTE AS (
    SELECT o.order_id, o.itemDescription as Description, 
     o.quantity_shipped as [Quantity], 
     o.itemCost as [Price each], 
     (o.quantity_shipped * CAST(o.itemCost as float)) as [Sub Total] 
    FROM dbo.order_items o) 
SELECT * 
FROM CTE 
UNION ALL 
SELECT NULL, 'Grand Total', NULL, NULL, SUM([Sub Total]) 
FROM CTE 
0

Pourquoi voudriez-vous fais ça? L'ajout d'une ligne totale vide de sens rend le traitement beaucoup plus compliqué par la suite. Sauf si vous faites des sumbtotals hiérarchiques pour les sous-lignes.

La manière habituelle de procéder est d'avoir des totaux dans le tableau des factures.

+0

Merci à tous ceux qui ont tendu la main. igorM a livré ce que je cherchais! – user2055729