Hi @Analyst_SQL ,
If above query is still not working, please try with below:
DECLARE @StartDate date = '03-06-2020';
DECLARE @enddate date = '06-06-2020';
;with cte as (
select c.CName category ,a.codeitem,upper(a.Descriptionitem) Descriptionitem,(b.EntryDate)B_Date,sum(Bpqty) B_QTY,sum(Bweight) B_Weight
from ItemMasterFile a
left join Bigbalprd b
on a.codeitem=b.codeitem
inner join Catagory c
on c.cid=isnull(b.CID,a.cid)
where convert(date,b.EntryDate,105) between @startdate and @enddate or b.entrydate is null
group by a.codeitem,b.entrydate,c.CName,a.Descriptionitem
)
,cte1 as (
select a.codeitem,upper(a.Descriptionitem) Descriptionitem, (d.date) D_Date,sum(qty) D_QTY,sum(Bweight) D_Weight
from ItemMasterFile a
left join Dispatch_BD c
on c.codeitem=a.codeitem
left join DispatchBM d
on d.DID=c.DID
where convert(date,d.date,105) between @startdate and @enddate and a.Packsize='Bigbale'
group by a.codeitem,a.Descriptionitem,d.date
)
select isnull(a.category,d.CName) category, c.codeitem,upper(c.Descriptionitem) Descriptionitem,B_Date,isnull(B_QTY,0) B_QTY,isnull(B_Weight,0) B_Weight,isnull(D_QTY,0) D_QTY,isnull(D_Weight,0) D_Weight
into #t
from ItemMasterFile c
left join cte a on a.codeitem=c.codeitem
left join cte1 b on a.codeitem=b.codeitem
and a.B_Date=b.D_Date
left join Catagory d on d.cid=c.CID
where c.Packsize='Bigbale'
DECLARE @cols NVARCHAR (MAX)
SET @cols = (SELECT DISTINCT ',[' + CONVERT(NVARCHAR, B_date, 23) + ' B_QTY]' +',[' + CONVERT(NVARCHAR, B_date, 23) + ' B_Weight]'
+',[' + CONVERT(NVARCHAR, B_date, 23) + ' D_QTY]' +',[' + CONVERT(NVARCHAR, B_date, 23) + ' D_Weight]'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
set @cols=SUBSTRING(@cols,2,len(@cols)-1)
DECLARE @cols1 NVARCHAR (MAX)
SET @cols1 = (SELECT DISTINCT ',cast(ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' B_QTY],0) as varchar(10)) ' +' [' + CONVERT(NVARCHAR, B_date, 23) + ' B_QTY]'
+',cast(ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' B_Weight],0) as varchar(10)) ' +' [' + CONVERT(NVARCHAR, B_date, 23) + ' B_Weight]'
+',cast(ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' D_QTY],0) as varchar(10)) ' +' [' + CONVERT(NVARCHAR, B_date, 23) + ' D_QTY]'
+',cast(ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' D_Weight],0) as varchar(10)) ' +' [' + CONVERT(NVARCHAR, B_date, 23) + ' D_Weight]'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
set @cols1=SUBSTRING(@cols1,2,len(@cols1)-1)
DECLARE @cols2 NVARCHAR (MAX)
SET @cols2 = (SELECT DISTINCT ',[' + CONVERT(NVARCHAR, B_date, 23) + ' B_QTY] NVARCHAR(1000)' +',[' + CONVERT(NVARCHAR, B_date, 23) + ' B_Weight] NVARCHAR(1000)'
+',[' + CONVERT(NVARCHAR, B_date, 23) + ' D_QTY] NVARCHAR(1000)' +',[' + CONVERT(NVARCHAR, B_date, 23) + ' D_Weight] NVARCHAR(1000)'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
DECLARE @cols3 NVARCHAR (MAX)
SET @cols3 = (SELECT DISTINCT ',''B_Qty'' [' + CONVERT(NVARCHAR, B_date, 23) +'],''B_Weight'' [' + CONVERT(NVARCHAR, B_date, 23) + ']'
+',''D_QTY'' [' + CONVERT(NVARCHAR, B_date, 23) + '] ' +',''D_Weight'' [' + CONVERT(NVARCHAR, B_date, 23) + '] '
from #t where ISNULL(B_date,'')<>'' for xml path(''))
set @cols3=SUBSTRING(@cols3,2,len(@cols3)-1)
DECLARE @SUM1 NVARCHAR (MAX)
SET @SUM1=(SELECT DISTINCT 'ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' D_QTY],0) +'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
SET @SUM1=LEFT(@SUM1,LEN(@SUM1)-1)
DECLARE @SUM2 NVARCHAR (MAX)
SET @SUM2=(SELECT DISTINCT 'ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' B_QTY],0) +'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
SET @SUM2=LEFT(@SUM2,LEN(@SUM2)-1)
DECLARE @SUM3 NVARCHAR (MAX)
SET @SUM3=(SELECT DISTINCT 'ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' D_Weight],0) +'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
SET @SUM3=LEFT(@SUM3,LEN(@SUM3)-1)
DECLARE @SUM4 NVARCHAR (MAX)
SET @SUM4=(SELECT DISTINCT 'ISNULL([' + CONVERT(NVARCHAR, B_date, 23) + ' B_Weight],0) +'
from #t where ISNULL(B_date,'')<>'' for xml path(''))
SET @SUM4=LEFT(@SUM4,LEN(@SUM4)-1)
DECLARE @SUM NVARCHAR (MAX)
SET @SUM='CAST(SUM('+@SUM1+')-SUM('+@SUM2+') AS VARCHAR),CAST(SUM('+@SUM3+')-SUM('+@SUM4+')AS VARCHAR),'
DECLARE @query NVARCHAR(MAX)
SET @query = '
select '''' category,'''' codeitem,'''' Descriptionitem,'''' [Balance Bale],'''' [Balance Lbs.],'+@cols3+'
UNION ALL
SELECT cast(category as varchar(50)) category,cast(codeitem as varchar(10)) codeitem,Descriptionitem,'+@SUM + @cols1 + '
FROM (
SELECT category,codeitem,Descriptionitem, CAST(B_Date AS VARCHAR) + '' ''+ITEM AS Name, VALUE
FROM (
select * from #t
)s
UNPIVOT
(VALUE FOR Item IN ([B_QTY], [B_Weight], [D_QTY],[D_Weight])) p
) src
PIVOT
(
MAX(VALUE) FOR Name IN (' + @cols + ')
) pvt
group by codeitem,Descriptionitem,category,' + @cols
EXEC SP_EXECUTESQL @query
drop table #t
Best regards
Melissa
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.
that there is no any null CID value in Bigbale table and itemmastertfile table .