Tu ejemplo n.° 2 me hizo rascarme la cabeza por un tiempo. Pensé para mis adentros:"No puedes DISTINCT una sola columna, ¿qué significaría eso?", hasta que me di cuenta de lo que estaba pasando.
Cuando tienes
SELECT DISTINCT(t.ItemNumber)
tú no , a pesar de las apariencias, en realidad solicita valores distintos de t.ItemNumber ! Su ejemplo n. ° 2 en realidad se analiza de la misma manera que
SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
con paréntesis sintácticamente correctos pero superfluos alrededor de t.ItemNumber . Es para el conjunto de resultados como un todo que DISTINCT aplica.
En este caso, dado que su GROUP BY grupos por la columna que realmente varía, se obtienen los mismos resultados. De hecho, estoy un poco sorprendido de que SQL Server no lo haga (en el GROUP BY ejemplo) insista en que la columna subconsultada se mencione en el GROUP BY lista.