J'ai une table qui contient les détails de la command. Comment puis-je créer une ligne à la fin qui totalise tous mes sous-totaux?
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
Cela vous donnera total par ID de command
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 un total général
SELECT SUM((o.quantity_shipped * CAST (o.itemCost as float))) as [GrandTotal] FROM dbo.order_items o
Un moyen (pas le plus performant) 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
Pourquoi ferais-tu ç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 normale est traitée en ayant des totaux dans la table des factures.