Saturday, September 11, 2021

Row wise data view as Colomn wise using PIVOT Column


drop table  AUTOREP_SIZE_RATIO
CREATE TABLE [dbo].AUTOREP_SIZE_RATIO(
[RATIO_ID] [bigint] NOT NULL,
[RATIO_NO] [int] NOT NULL,
[CATID] [int] NULL,
[SUB_ID] [int] NULL,
[SIZE_ID] [int] NULL,
[QTY] [int] NULL
) ON [PRIMARY]

GO


insert into  AUTOREP_SIZE_RATIO(
RATIO_ID, RATIO_NO, CATID, SUB_ID, SIZE_ID, QTY)values
(1000,1,100,101,1043,1),
(1000,1,100,101,1044,1),
(1001,2,100,101,1042,2),
(1001,2,100,101,1043,2),
(1001,2,100,101,1044,2),
(1002,3,100,101,1042,3),
(1002,3,100,101,1043,3),
(1002,3,100,101,1044,3),
(1002,3,100,101,1045,3)





DECLARE  @CATID nvarchar(max)=100,
DECLARE  @SUB_ID nvarchar(max)=101

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX),
@PivotColumnNames AS NVARCHAR(MAX),
@PivotSelectColumnNames AS NVARCHAR(MAX)

--Get distinct values of the PIVOT Column
SELECT @PivotColumnNames= ISNULL(@PivotColumnNames + ',','')
+ QUOTENAME(size)
FROM (SELECT DISTINCT AM.[DESCRIPTION] size
                     FROM [dbo].[AUTOREP_SIZE_RATIO] SR  LEFT JOIN ARTICLEMATRIX AM ON AM.ARTMID=SR.SIZE_ID
where SR. CATID= @CATID and SR. SUB_ID= @SUB_ID) AS cat

--select @PivotColumnNames


SELECT @PivotSelectColumnNames 
= ISNULL(@PivotSelectColumnNames + ',','')
+ 'ISNULL(' + QUOTENAME(size) + ', 0) AS '
+ QUOTENAME(size) 
FROM (SELECT DISTINCT AM.[DESCRIPTION] size
                     FROM [dbo].[AUTOREP_SIZE_RATIO] SR  LEFT JOIN ARTICLEMATRIX AM ON AM.ARTMID=SR.SIZE_ID
where SR. CATID= @CATID and SR. SUB_ID= @SUB_ID) AS cat order by size


--select @PivotSelectColumnNames

SET @DynamicPivotQuery = 
N'SELECT RATIO_ID,RATIO_NO,
' + @PivotSelectColumnNames +' from
(SELECT RATIO_ID,RATIO_NO,qty,DESCRIPTION size
                     FROM [dbo].[AUTOREP_SIZE_RATIO] SR  LEFT JOIN ARTICLEMATRIX AM ON AM.ARTMID=SR.SIZE_ID
where SR. CATID= '+@CATID+' and SR. SUB_ID= '+@SUB_ID+')D 
pivot(sum(QTY) for size in (' + @PivotColumnNames + ')) as pvt' ;


--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery