Create Pivot Based Off Variables
A PIVOT solution requires a well-know number of columns.
If you're looking for an answer that covers no matter which dates, I'd suggest you to search for 'Dynamic pivot'

;WITH data AS
(
    SELECT  dname, 
            tr - dc as result,
            LEFT(DATENAME(MONTH, sdate), 3) + '-' + RIGHT(CAST(YEAR(sdate) AS varchar(10)), 2) as DateName
    FROM    @Test
)
SELECT dname, [Jan-16],[Jan-17],[Feb-16],[Feb-17]
FROM   (SELECT * FROM data) src
PIVOT  (SUM(result) FOR DateName IN([Jan-16],[Jan-17],[Feb-16],[Feb-17])) pvt;

GO


dname | Jan-16 | Jan-17 | Feb-16 | Feb-17
:---- | -----: | -----: | -----: | -----:
Green |    103 |     90 |   null |    375


dbfiddle here