Ditt exempel #2 fick mig att klia mig i huvudet ett tag - jag tänkte för mig själv:"Du kan inte DISTINCT
en enda kolumn, vad skulle det betyda?" - tills jag insåg vad som pågår.
När du har
SELECT DISTINCT(t.ItemNumber)
du är inte , trots utseende, frågar faktiskt efter distinkta värden av t.ItemNumber
! Ditt exempel #2 tolkas faktiskt på samma sätt som
SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
med syntaktiskt korrekta men överflödiga parenteser runt t.ItemNumber
. Det är för resultatuppsättningen som helhet som DISTINCT
gäller.
I det här fallet, eftersom din GROUP BY
grupperar efter kolumnen som faktiskt varierar, får du samma resultat. Jag är faktiskt lite förvånad över att SQL Server inte gör det (i GROUP BY
exempel) insistera på att den undersökta kolumnen nämns i GROUP BY
lista.