Вы можете использовать ROW_NUMBER()
оконную функцию для достижения этой цели.ORDER BY
будет определять, какая запись будет первой в порядке следования каждого раздела.
;WITH RankingByProfile AS
(
SELECT
T.BkgID,
T.ProfileID,
T.ArrivalDate,
Ranking = ROW_NUMBER() OVER (PARTITION BY T.ProfileID, T.ArrivalDate ORDER BY T.BkgID ASC)
FROM
Table1 AS T
)
SELECT
R.BkgID,
R.ProfileID,
R.ArrivalDate
FROM
RankingByProfile AS R
WHERE
R.Ranking = 1
Вы также можете использовать GROUP BY
и получить MIN(BkgID)
, но вы не сможете получить доступ к другимстолбцы без агрегатных функций.
SELECT
MinBkgID = MIN(T.BkgID),
T.ProfileID,
T.ArrivalDate
FROM
Table1 AS T
GROUP BY
T.ProfileID,
T.ArrivalDate