Je voorbeeld #2 zorgde ervoor dat ik me een tijdje op mijn hoofd krabde - ik dacht bij mezelf:"Je kunt niet DISTINCT een enkele kolom, wat zou dat betekenen?" - totdat ik me realiseerde wat er aan de hand was.
Wanneer je
. hebtSELECT DISTINCT(t.ItemNumber)
jij bent niet , ondanks de schijn, eigenlijk vragen om verschillende waarden van t.ItemNumber ! Uw voorbeeld #2 wordt eigenlijk hetzelfde geparseerd als
SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
met syntactisch correcte maar overbodige haakjes rond t.ItemNumber . Het is voor de resultaatset als geheel dat DISTINCT van toepassing.
In dit geval, aangezien uw GROUP BY groepen per kolom die daadwerkelijk varieert, krijgt u dezelfde resultaten. Het verbaast me eigenlijk een beetje dat SQL Server dat niet doet (in de GROUP BY voorbeeld) aandringen dat de kolom met subquery's wordt vermeld in de GROUP BY lijst.