Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
iTorvic Member Откуда: Сообщений: 3 |
Добрый день, Есть таблица: Tag | Account 100 1 200 2 300 2 400 1 100 3 Требуется составить запрос, который выведет вот такой результат: Tag | Account 100 1 200 2 100 3 То есть вывести строки, с первым вхождением поля Account. Пробовал различные комбинации с DISTINCT и GROUP BY, но самостоятельно составить запрос не в состоянии. |
30 янв 16, 13:33 [18749576] Ответить | Цитировать Сообщить модератору |
Кот Матроскин Member Откуда: Москва Сообщений: 8933 |
iTorvic, "первой" запись может быть лишь при указании конкретной сортировки. |
30 янв 16, 13:41 [18749584] Ответить | Цитировать Сообщить модератору |
iTorvic Member Откуда: Сообщений: 3 |
Кот Матроскин, Допустим, в таблице есть третий столбец, например, с датой и сортировка производится по этому столбцу, по возрастанию. |
30 янв 16, 13:50 [18749596] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
with a as ( select *, row_number() over (partition by Account order by [столбец(ы) упорядочивания]) as rn from [Таблица] ) select Tag, Account from a where rn = 1; |
30 янв 16, 13:56 [18749607] Ответить | Цитировать Сообщить модератору |
Кот Матроскин Member Откуда: Москва Сообщений: 8933 |
Если у Вас 2014 сервер - воспользуйтесь first_value, если нет - можно сделать в 2 шага с row_number |
30 янв 16, 13:59 [18749614] Ответить | Цитировать Сообщить модератору |
iTorvic Member Откуда: Сообщений: 3 |
invm, Большое спасибо, такой вариант работает. |
30 янв 16, 14:12 [18749637] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |