Z vašeho příkladu č. 2 jsem se chvíli drbal na hlavě – v duchu jsem si říkal:„Nemůžeš DISTINCT
jeden sloupec, co by to znamenalo?" - dokud jsem si neuvědomil, co se děje.
Když máte
SELECT DISTINCT(t.ItemNumber)
nejste , navzdory zdání ve skutečnosti požaduje odlišné hodnoty z t.ItemNumber
! Váš příklad č. 2 je ve skutečnosti analyzován stejně jako
SELECT DISTINCT
(t.ItemNumber)
,
(SELECT TOP 1 ItemDescription
FROM Transactions
WHERE ItemNumber = t.ItemNumber
ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t
se syntakticky správnými, ale nadbytečnými závorkami kolem t.ItemNumber
. DISTINCT
je pro výslednou sadu jako celek platí.
V tomto případě, protože vaše GROUP BY
skupiny podle sloupce, který se ve skutečnosti liší, získáte stejné výsledky. Vlastně mě trochu překvapuje, že to SQL Server nedělá (v GROUP BY
příklad) trvejte na tom, aby byl poddotazovaný sloupec uveden v GROUP BY
seznam.