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.