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.