select csm.csmCustomerName, cur.curNameOfCurrency,
sum(sot.sotItemTotalAmount)as 'TotalItemsAmount',
SUM(sorTotalTaxAmountValue) as 'TotalTax',
SUM(sorTotalChargeDetailsAmountValue) as 'TotalCharges',
(sum(sorTotalTaxAmountValue)+sum(sorTotalChargeDetailsAmountValue)+sum(sot.sotItemTotalAmount)) as 'NetAmount'
from dbo.SalesOrder sor join dbo.Currency cur
on sor.sorCurrencyId=cur.curId
join dbo.CustomerMaster csm
on sor.sorCustomerMasterId=csm.csmId
join SalesOrderItemDetails sot
on sot.sotSalesOrderId=sor.sorId
Group by csmCustomerName, curNameOfCurrency with rollup;
I want the sum of TotalItemsAmount
, TotalTax
, TotalCharges
and NetAmount
in the last row of respective columns. In result set, I get duplication of each row, could anyone correct the mistake in my code.
我想在各列的最后一行中使用TotalItemsAmount,TotalTax,TotalCharges和NetAmount之和。在结果集中,我得到每行的重复,任何人都可以纠正我的代码中的错误。
C1 C2 C3 C4 C5 C6
C1 C2 C3 C4 C5 C6
A USD 1 7 2 10
1美元1 2 10美元
B USD 3 6 3 12
B USD 3 6 3 12
C USD 5 3 0 8
C USD 5 3 0 8
D USD 4 2 1 7
D USD 4 2 1 7
13 18 6 37
1 个解决方案
#1
It is done via the grouping sets like:
它通过分组集完成,如:
DECLARE @t TABLE ( code CHAR(3), a INT, b INT )
INSERT INTO @t
VALUES ( 'USD', 1, 2 ),
( 'USD', 5, 1 ),
( 'USD', 10, 7 ),
( 'EUR', 15, 13 )
SELECT code ,
SUM(a) AS a ,
SUM(b) AS b
FROM @t
GROUP BY GROUPING SETS(( code ), ( ))
Output:
code a b
EUR 15 13
USD 16 10
NULL 31 23
#1
It is done via the grouping sets like:
它通过分组集完成,如:
DECLARE @t TABLE ( code CHAR(3), a INT, b INT )
INSERT INTO @t
VALUES ( 'USD', 1, 2 ),
( 'USD', 5, 1 ),
( 'USD', 10, 7 ),
( 'EUR', 15, 13 )
SELECT code ,
SUM(a) AS a ,
SUM(b) AS b
FROM @t
GROUP BY GROUPING SETS(( code ), ( ))
Output:
code a b
EUR 15 13
USD 16 10
NULL 31 23