HI
i need to add grand total in pivot column .
DECLARE @Status int=1
Declare @STARTDATEkey int
Declare @ENDDATEkey int
set @STARTDATEkey=20230525
set @ENDDATEkey=20230529
If exists (select * from tempdb.sys.all_objects where name like '#TMP_DATEatt%' )
BEGIN
DROP TABLE #TMP_DATEatt
END
DECLARE @Query1 NVARCHAR(MAX)
DECLARE @pivv NVARCHAR(MAX),@Query NVARCHAR(MAX), @column NVARCHAR(MAX),@Columns2 NVARCHAR(MAX)
;WITH Sales_CTE (RETAILERID, CompanyName, L1,L2,L3,L4,L5,Posteddatekey,Toupamount,Deno)
AS
(
select b.RETAILERID,B.CompanyName,
sm.emp_Name L1,
ss.emp_Name L2,
sP.emp_Name L3,
sN.emp_Name L4,
sk.emp_Name L5,
Posteddatekey,
sum(Amount) Toupamount,
sum(Deno_2000_count) Deno
from CLIENT_TP_ENTRY A JOIN
GM_RETAILER B ON A.Clientid=B.Retailerid
left join Dhan_Employee sm on b.SalesPersonId=sm.ID
left join Dhan_Employee ss on ss.ID=sm.superiorid
left join Dhan_Employee sP on sP.ID=SS.superiorid
left join Dhan_Employee sN on sN.ID=SP.superiorid
left join Dhan_Employee sk on sn.superiorid=sk.id
where Deno_2000_count >0 and Posteddatekey >= @STARTDATEkey and Posteddatekey <= @ENDDATEkey
group by b.RETAILERID,B.CompanyName,sm.emp_Name,ss.emp_Name,sP.emp_Name,sN.emp_Name,sk.emp_Name, Posteddatekey
union
select b.Distributorid,B.CompanyName,
sm.emp_Name L1,
ss.emp_Name L2,
sP.emp_Name L3,
sN.emp_Name L4,
sk.emp_Name L5,
Posteddatekey ,
sum(Amount) Toupamount,
sum(Deno_2000_count) Deno
from CLIENT_TP_ENTRY A JOIN
GM_Distributor B ON A.Clientid=B.Distributorid
left join Dhan_Employee sm on b.SalesPersonId=sm.ID
left join Dhan_Employee ss on ss.ID=sm.superiorid
left join Dhan_Employee sP on sP.ID=SS.superiorid
left join Dhan_Employee sN on sN.ID=SP.superiorid
left join Dhan_Employee sk on sn.superiorid=sk.id
where Deno_2000_count >0 and Posteddatekey >= @STARTDATEkey and Posteddatekey <= @ENDDATEkey
group by b.Distributorid,B.CompanyName,sm.emp_Name,ss.emp_Name,sP.emp_Name,sN.emp_Name,sk.emp_Name, Posteddatekey
union
select b.Superdistributorid,B.CompanyName,
sm.emp_Name L1,
ss.emp_Name L2,
sP.emp_Name L3,
sN.emp_Name L4,
sk.emp_Name L5,
Posteddatekey,
sum(Amount) Toupamount,
sum(Deno_2000_count) Deno
from CLIENT_TP_ENTRY A JOIN
GM_SUPERDISTRIBUTOR B ON A.Clientid=B.Superdistributorid
left join Dhan_Employee sm on b.SalesPersonId=sm.ID
left join Dhan_Employee ss on ss.ID=sm.superiorid
left join Dhan_Employee sP on sP.ID=SS.superiorid
left join Dhan_Employee sN on sN.ID=SP.superiorid
left join Dhan_Employee sk on sn.superiorid=sk.id
where Deno_2000_count >0 and Posteddatekey >= @STARTDATEkey and Posteddatekey <= @ENDDATEkey
group by b.Superdistributorid,B.CompanyName,sm.emp_Name,ss.emp_Name,sP.emp_Name,sN.emp_Name,sk.emp_Name, Posteddatekey
)
Select RETAILERID Clientid, CompanyName clientname, L1,L2,L3,L4,L5,Posteddatekey,Toupamount toupupamount,Deno Deno into #TMP_DATEatt from Sales_CTE
SELECT @pivv=COALESCE(@pivv+',','')+ QUOTENAME(CONVERT(VARCHAR,Posteddatekey)+'_topup') +','+QUOTENAME(CONVERT(VARCHAR,Posteddatekey)+'_DENOCOUNT') from CLIENT_TP_ENTRY
where Deno_2000_count >0 and Posteddatekey >= @STARTDATEkey and Posteddatekey <= @ENDDATEkey
GROUP BY Posteddatekey
order by Posteddatekey
SET @Columns2 = SUBSTRING((SELECT ',ISNULL(['+ CONVERT(VARCHAR,Posteddatekey)+'_Topup'+'],''0'') AS ['+CONVERT(VARCHAR,Posteddatekey)+'_Topup'+']',
',ISNULL(['+ CONVERT(VARCHAR,Posteddatekey)+'_Denocount'+'],''0'') AS ['+CONVERT(VARCHAR,Posteddatekey)+'_Denocount'+']'
FROM CLIENT_TP_ENTRY where Deno_2000_count >0 and Posteddatekey >= @STARTDATEkey and Posteddatekey <= @ENDDATEkey
GROUP BY Posteddatekey order by Posteddatekey FOR XML PATH('')),2,8000)
SET @Query = N'SELECT Clientid, clientname,' + @Columns2 + ', Total = ' +REPLACE(@pivv, ',[', '+[') + '
FROM
(
SELECT Clientid, clientname,toupupamount,CONVERT(VARCHAR,Posteddatekey)+''_Topup'' Typ FROM #TMP_DATEatt
UNION
SELECT Clientid, clientname,Deno ,CONVERT(VARCHAR,Posteddatekey)+''_DENOCOUNT'' Typ FROM #TMP_DATEatt AS P
) AS j
PIVOT
(
SUM(toupupamount) FOR Typ IN ('+ @pivv + ')
) AS p;';
EXEC sp_executesql @Query;