Seu exemplo nº 2 me fez coçar a cabeça por um tempo - pensei comigo mesmo:"Você não pode
DISTINCT uma única coluna, o que isso significaria?" - até eu perceber o que está acontecendo. Quando voce tem
SELECT DISTINCT(t.ItemNumber)
você não , apesar das aparências, na verdade solicitando valores distintos de
t.ItemNumber ! Seu exemplo nº 2 na verdade é analisado da mesma forma que SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
com parênteses sintaticamente corretos, mas supérfluos em torno de
t.ItemNumber . É para o conjunto de resultados como um todo que DISTINCT se aplica. Nesse caso, como seu
GROUP BY grupos pela coluna que realmente varia, você obtém os mesmos resultados. Na verdade, estou um pouco surpreso que o SQL Server não (no GROUP BY exemplo) insistir que a coluna subconsultada seja mencionada no GROUP BY Lista.