SQL Server: how to select rows when changes happen?
This should get you what you want.  You want to look into using the LEAD function.  

DECLARE @T TABLE
    (
    CreationDate DATE NOT NULL
    , [Value] VARCHAR(10) NOT NULL
    )

INSERT INTO @T
    (CreationDate, [Value])
VALUES ('6/4/2019', 'apple')
    , ('6/1/2019', 'apple')
    , ('5/30/2019', 'apple')
    , ('4/30/2019', 'orange')
    , ('4/1/2019', 'orange')
    , ('3/1/2019', 'apple')
    , ('2/1/2019', 'orange')

;WITH CTE_Source AS
    (
    SELECT TOP 100 PERCENT CreationDate, [Value], LEAD([Value]) OVER (ORDER BY (SELECT NULL)) AS PriorValue
    FROM @T AS T
    ORDER BY T.CreationDate, T.[Value]
    )
SELECT CreationDate, [Value] 
FROM CTE_Source
WHERE PriorValue IS NULL OR PriorValue &lt;&gt; [Value]