Please check:
DECLARE @StartDate DATETIME, @Enddate DATETIME
SET @StartDate = '02-06-2021'
SET @Enddate = '02-06-2021'
;WITH emp
as
(
select Secnam,ISNULL(sum(e.qty),0) Employee_QTY from #Sections s
left join #Emp_Strength e on s.secid=e.secid
where (Entrydate BETWEEN @StartDate AND @Enddate or Entrydate is null)
group by Secnam
)
--SELECT * FROM emp
,cte
AS
(
SELECT DISTINCT Sec.Secnam,
ISNULL(SUM(b1.Bpqty),0)Bigbale_QTY,ISNULL(sum(b1.Bweight),0)Bigbale_Weight,
ISNULL(SUM(b.prdQTY),0)Smallbale_QTY,ISNULL(SUM(case when b.prdQTY is null then 0 else i.weight end ),0)Small_Bale_weight
FROM #ItemMasterFile i
LEFT OUTER JOIN #Probale b ON i.CodeItem = b.CodeItem
LEFT OUTER JOIN #Bigbalprd b1 ON i.CodeItem = b1.CodeItem
Full Outer Join #Sections sec on i.SecID=sec.SecID
where (b.DelID is null and b.FID=1 and b.Entrydate BETWEEN @StartDate AND @Enddate or b.EntryDate is null )
and
(b1.DelID is null and b1.FID=1 and b1.EntryDate BETWEEN @StartDate AND @Enddate or b1.EntryDate is Null )
GROUP BY sec.Secnam
)
--SELECT * FROM cte
,
ctef
AS
(
SELECT DISTINCT Sec.Secnam,
ISNULL(SUM(b1.Bpqty),0)Bigbale_QTY2,ISNULL(sum(b1.Bweight),0)Bigbale_Weight2,
ISNULL(SUM(b.prdQTY),0)Smallbale_QTY2,ISNULL(SUM(case when b.prdQTY is null then 0 else i.weight end ),0)Small_Bale_weight2
--ISNULL(SUM(emp.QTY),0)Employee_QTY
FROM #ItemMasterFile i
LEFT OUTER JOIN #Probale b ON i.CodeItem = b.CodeItem
LEFT OUTER JOIN #Bigbalprd b1 ON i.CodeItem = b1.CodeItem
Full Outer Join #Sections sec on i.SecID=sec.SecID
where (b.DelID is null and b.FID=2 and b.Entrydate BETWEEN @StartDate AND @Enddate or b.EntryDate is null )
and
(b1.DelID is null and b1.FID=2 and b1.EntryDate BETWEEN @StartDate AND @Enddate or b1.EntryDate is Null )
GROUP BY sec.Secnam
)
--SELECT * FROM ctef
,
cte1 as (
SELECT cte.secnam, Smallbale_QTY,Small_Bale_weight, Bigbale_QTY, Bigbale_Weight,
( SELECT SUM(val)
FROM (VALUES (Bigbale_QTY)
, (Smallbale_QTY)
) AS value(val)
) AS Total_QTY,
( SELECT SUM(val)
FROM (VALUES (Bigbale_Weight),
(Small_Bale_weight )
)AS value(val)
) as Total_Weight,
coalesce(Employee_QTY,0) Employee_QTY
FROM cte left join emp on cte.secnam=emp.secnam
)
,
ctef2 as (
SELECT ctef.secnam, Smallbale_QTY2,Small_Bale_weight2, Bigbale_QTY2, Bigbale_Weight2,
( SELECT SUM(val)
FROM (VALUES (Bigbale_QTY2)
, (Smallbale_QTY2)
) AS value(val)
) AS Total_QTY,
( SELECT SUM(val)
FROM (VALUES (Bigbale_Weight2),
(Small_Bale_weight2 )
)AS value(val)
) as Total_Weight,
coalesce(Employee_QTY,0) Employee_QTY
FROM ctef left join emp on ctef.secnam=emp.secnam
)
--SELECT * FROM ctef2
,MyCTE as (
select ISNULL(cte1.Secnam,ctef2.Secnam) Secnam,cte1.Smallbale_QTY,ctef2.Smallbale_QTY2,cte1.Small_Bale_weight,ctef2.Small_Bale_weight2,cte1.Bigbale_QTY,cte1.Bigbale_Weight,
cte1.Total_QTY,cte1.Total_Weight,cte1.Employee_QTY,
--case when ((nullif(Total_Weight,0))/nullif(Employee_QTY,0)) is null then 0 else ((nullif(Total_Weight,0))/nullif(Employee_QTY,0)) end as peremp_QTY,
cast((cte1.Small_Bale_weight)*100.0/(sum(cte1.Total_Weight)over(PARTITION BY (1)
))AS numeric(10,2))as percentage ,
cast((cte1.Bigbale_Weight)*100.0/(sum(cte1.Total_Weight)over(PARTITION BY (1)
))AS numeric(10,2))as bpercentage ,
ISNULL(cast((cte1.Small_Bale_weight)*100.0/(sum(cte1.Total_Weight)over(PARTITION BY (1)
))AS numeric(10,2))+cast((cte1.Bigbale_Weight)*100.0/(sum(cte1.Total_Weight)over(PARTITION BY (1)
))AS numeric(10,2)),0) as P_Total
from cte1
Full Outer Join ctef2 on cte1.Secnam=ctef2.Secnam
--where cte1.Smallbale_QTY+cte1.Small_Bale_weight+cte1.Bigbale_QTY+cte1.Bigbale_Weight+cte1.Total_QTY+cte1.Total_Weight+cte1.Employee_QTY<>0
group by cte1.Secnam,ctef2.Secnam,cte1.Small_Bale_weight,cte1.Smallbale_QTY,cte1.Bigbale_QTY,cte1.Bigbale_Weight,cte1.Total_QTY,
cte1.Employee_QTY,cte1.Total_Weight,ctef2.Smallbale_QTY2,ctef2.Small_Bale_weight2
)
SELECT * FROM mycte
order by Secnam
Ouput:
Regards
Echo