powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос, убирающий повторы строк по значениям в одном стобце.
12 сообщений из 12, страница 1 из 1
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39705931
AlexCalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, возникли следующие вопросы по запросам к базе данных. Перерыл интернет, лаконичных решений не нашел, надеюсь на вашу помощь.

Есть таблица данных T1 следующего вида:

Номер | Машина | Модель
1 | Тойота | Камри
2 | Лексус | RX330
3 | Тойота | Королла
4 | Ниссан | Патрол
5 | Ниссан | Кашкай

В результате запроса нужно получить таблицу в которой только первые значения по столбцу Машина, повторы не выводить. Получить нужно такую таблица T2:

Номер | Машина | Модель
1 | Тойота | Камри
2 | Лексус | RX330
4 | Ниссан | Патрол

Я пробовал через DISTINCT и GROUP BY, но это работает только если вывожу один столбец Машина, если беру все столбцы таблицы, не работает. В сети находил решения, но все они трехэтажные, неужели нет простого решения?
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39705933
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalmВсем привет, возникли следующие вопросы по запросам к базе данных. Перерыл интернет, лаконичных решений не нашел, надеюсь на вашу помощь.

Есть таблица данных T1 следующего вида:

Номер | Машина | Модель
1 | Тойота | Камри
2 | Лексус | RX330
3 | Тойота | Королла
4 | Ниссан | Патрол
5 | Ниссан | Кашкай

В результате запроса нужно получить таблицу в которой только первые значения по столбцу Машина, повторы не выводить. Получить нужно такую таблица T2:

Номер | Машина | Модель
1 | Тойота | Камри
2 | Лексус | RX330
4 | Ниссан | Патрол

Я пробовал через DISTINCT и GROUP BY, но это работает только если вывожу один столбец Машина, если беру все столбцы таблицы, не работает. В сети находил решения, но все они трехэтажные, неужели нет простого решения?
двухэтажное с row_number()
одноэтажное с row_number () и top 1 with ties
Только вот зря вы эффективность решения по этажности оцениваете
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39705936
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
with x as ( select Номер = min(Номер),  Машина from T1 group by  Машина )
  select T1.*
     from x left outer join T1 on T1.Номер = x.Номер and T1.Машина = x.Машина
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39705940
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalm,

TOP 1 WITH TIES с сортировкой по ROW_NUMBER() OVER(partition by Машина order by Номер)
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706003
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
WITH CTE AS (SELECT N=ROW_NUMBER()OVER(PARTITION BY Машина ORDER BY Номер),* FROM T1)
SELECT * FROM CTE WHERE N=1;
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706007
AlexCalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь, но, как я понимаю, все предложенное выше использует колонку Номер. А если такой колонки нет?

Машина | Модель
Тойота | Камри
Лексус | RX330
Тойота | Королла
Ниссан | Патрол
Ниссан | Кашкай

Как получить такой результат в этом случае?

Машина | Модель
Тойота | Камри
Лексус | RX330
Ниссан | Патрол

PS Н-да, для элементарной вещи нет стандартной функции. Теперь боюсь даже спрашивать про аналог функции ВПР из екселя, там наверно 3 страницы кода будет.
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706010
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalmА если такой колонки нет?
Как получить такой результат в этом случае?А вот в этом случае, от вас потребуется объяснение почему, например, для Тойота нужно оставить именно Камри, а не Королла ?

пс
сразу предупреждаю, ответ "потому что она первая" не канает :)
Эт тебе не Эксель ...
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706011
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalmСпасибо за помощь, но, как я понимаю, все предложенное выше использует колонку Номер. А если такой колонки нет?

Машина | Модель
Тойота | Камри
Лексус | RX330
Тойота | Королла
Ниссан | Патрол
Ниссан | Кашкай

Как получить такой результат в этом случае?

Машина | Модель
Тойота | Камри
Лексус | RX330
Ниссан | Патрол

PS Н-да, для элементарной вещи нет стандартной функции. Теперь боюсь даже спрашивать про аналог функции ВПР из екселя, там наверно 3 страницы кода будет.
Код: sql
1.
2.
WITH CTE AS (SELECT N=ROW_NUMBER()OVER(PARTITION BY Машина ORDER BY Модель),* FROM T1)
SELECT * FROM CTE WHERE N=1;

А вообще, включите мозг. Достаточно понять, зачем в OVER() должен быть ORDER BY.
И не надо рыть Интернет - всё это есть на этом форуме. Было сто раз.
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706032
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalmтолько первые значения по столбцу МашинаПонятие "первый" существует лишь после того, как указана сортировка по выражению, согласно которому записи уникальны:
courtпс
сразу предупреждаю, ответ "потому что она первая" не канает :)
Эт тебе не Эксель ...
Какая же используется сортировка в показанном примере?
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706034
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Я нашёл возможную сортировку - ORDER BY [Машина],SUBSTRING([Модель],3,1) . Но интуиция подсказывает, что на деле всё не так...
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706074
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalmКак получить такой результат в этом случае?
— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно... — сказала Алиса.
— Тогда все равно, куда и идти, — заметил Кот.
— ...только бы попасть куда-нибудь, — пояснила Алиса.
— Куда-нибудь ты обязательно попадешь, — сказал Кот.
...
Рейтинг: 0 / 0
Запрос, убирающий повторы строк по значениям в одном стобце.
    #39706668
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCalm,

Вот это - трёхэтажный вариант или сойдёт?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select *
from t
inner join 
	(select min(Номер) as МН
	 from t
	 group by Машина
	) as a
on t.Номер=МН
order by Номер
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос, убирающий повторы строк по значениям в одном стобце.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]