Я смог получить его с помощью приведенного ниже кода, вам просто нужно заменить #table на имя вашей таблицы. Также игнорируйте первую часть кода, которая устанавливает таблицу.
Здесь есть похожие вопросы / ответы: SQL Server динамический запрос PIVOT?
-------------------------------------------------------------------
IF OBJECT_ID('tempdb..#table') IS NOT NULL
BEGIN
DROP TABLE #table
END
CREATE TABLE #table(ITEMCODE VARCHAR(10),DATE date,INSTOCK int)
insert into #table values('ABC001','2019-01-04',10)
insert into #table values('ABC001','2019-02-04',10)
insert into #table values('ABC001','2019-03-04',10)
insert into #table values('ABC001','2019-04-04',5)
insert into #table values('ABC001','2019-05-04',5)
-------------------------------------------------------------------
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.DATE)
FROM #table c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ITEMCODE, ' + @cols + ' from
(
select ITEMCODE
, DATE
, INSTOCK
from #table
) x
pivot
(
sum(INSTOCK)
for DATE in (' + @cols + ')
) p '
execute(@query)