Using the query select Size,ColorName,QNTY from tbl1.
I'm getting following table

Now I want to get the table in following format

How it possible using pivot
Using the query select Size,ColorName,QNTY from tbl1.
I'm getting following table

Now I want to get the table in following format

How it possible using pivot
 
    
     
    
    Try this:
SELECT *
FROM (SELECT Size, ColorName, Qnty
      FROM YourTable)p
      PIVOT (SUM(Qnty) FOR Size IN ([34],[32],[30])Pvt
In order to have dynamic pivot use following query:
DECLARE @columns NVARCHAR(1000) = '',
        @sql NVARCHAR(MAX)
SELECT @Columns = STUFF((SELECT ',['+Size+']'
                        FROM (SELECT DISTINCT Size FROM YourTable)z
                        FOR XML PATH('')),1,1,'')
SET @sql = 'SELECT * 
            FROM (SELECT Size, ColorName, Qnty
                  FROM YourTable)p
            PIVOT (SUM(Qnty) FOR Size IN ('+@columns+')Pvt'
EXECUTE(@sql)
 
    
    Try this
Mathod 1:
SELECT * FROM 
(
  SELECT Size, ColorName, Qnty
  FROM Table1
)p
PIVOT 
(
 Max(Qnty) 
 FOR Size IN ([34],[32],[30])
)Pvt
Method 2:
DECLARE @QuestionList nvarchar(max);
DECLARE @qry nvarchar(max);
SELECT @QuestionList = STUFF((SELECT ',['+ CAST(Size AS nVarchar(max))+']'
                        FROM (SELECT DISTINCT Size FROM Table1)z
                        FOR XML PATH('')),1,1,'')
SET @qry = 'SELECT * FROM 
            (SELECT ColorName, Qnty, Size FROM Table1
            )X PIVOT (MAX(Qnty) FOR Size IN (' + @QuestionList + ')) pvt
            ORDER BY Colorname;';
Exec sp_executesql @qry;
Method 3:
SELECT ColorName,
       MAX(CASE WHEN Size = 34 THEN Qnty END) AS [34],
       MAX(CASE WHEN Size = 32 THEN Qnty END) AS [32],
       MAX(CASE WHEN Size = 30 THEN Qnty END) AS [30]
FROM Table1
GROUP BY ColorName;
