powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сформировать запрос: over (partition) или курсор?
4 сообщений из 4, страница 1 из 1
Сформировать запрос: over (partition) или курсор?
    #40073358
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, помогите пожалуйста, хотя бы советом куда смотреть. Нужно выбрать все строки с наименьшей ценой, где уникальны наименование и импортер (выделил красным ID, которые нужно отобрать)

IDНаименованиеИмпортерЦенаРеквизитыАдрес1ЯблокиООО Яблоки100ИНН 11111 КПП 22222Москва2ЯблокиООО Яблоки200ИНН 11111 КПП 22223Спб3СливаООО Сливы100ИНН 11111 КПП 22224Новгород4СливаООО Сливы200ИНН 11111 КПП 22225Тула5АпельсинООО Апельсины100ИНН 11111 КПП 22226Москва6АпельсинООО Апельсины200ИНН 11111 КПП 22227Москва7АпельсинООО Тоже апельсины300ИНН 11111 КПП 22228Спб8ТыкваООО Тыквы300ИНН 11111 КПП 22229Новгород9БритваООО Бритвы600ИНН 11111 КПП 22230Тула

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table #tmp (ID int, [Наименование] varchar(20), [Импортер] varchar(20), 
	[Цена] int, [Реквизиты] varchar(200), [Адрес] varchar(200));
insert into #tmp (ID, [Наименование], [Импортер], [Цена], [Реквизиты], [Адрес]) 
values (1, 'Яблоки', 'ООО Яблоки', 100, 'ИНН 11111 КПП 22222', 'Москва')
	 , (2, 'Яблоки', 'ООО Яблоки', 200, 'ИНН 11111 КПП 22223', 'Спб')
	 , (3, 'Слива', 'ООО Сливы', 100, 'ИНН 11111 КПП 22224', 'Новгород')
	 , (4, 'Слива', 'ООО Сливы', 200, 'ИНН 11111 КПП 22225', 'Тула')
	 , (5, 'Апельсин', 'ООО Апельсины', 100, 'ИНН 11111 КПП 22226', 'Москва')
	 , (6, 'Апельсин', 'ООО Апельсины', 200, 'ИНН 11111 КПП 22227', 'Москва')
	 , (7, 'Апельсин', 'ООО Тоже апельсины', 300, 'ИНН 11111 КПП 22228', 'Спб')
	 , (8, 'Тыква', 'ООО Тыквы', 300, 'ИНН 11111 КПП 22229', 'Новгород')
	 , (9, 'Бритва', 'ООО Бритвы', 600, 'ИНН 11111 КПП 22230', 'Тула');
...
Рейтинг: 0 / 0
Сформировать запрос: over (partition) или курсор?
    #40073372
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford,

Код: sql
1.
2.
3.
4.
with x as (
    select row_number() over (partition by [Наименование], [Импортер] order by [Цена] asc) as rn, * from #tmp 
)
select * from x where [rn] = 1 order by [id]
...
Рейтинг: 0 / 0
Сформировать запрос: over (partition) или курсор?
    #40073373
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford,

до появления оконных функций писали так
Код: sql
1.
2.
 
where exists (select min(*) from #tmp where ... group by [Наименование], [Импортер])

. с оконными функциями стало проще. непонятно каким тут боком курсор?
...
Рейтинг: 0 / 0
Сформировать запрос: over (partition) или курсор?
    #40073376
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford
Привет, помогите пожалуйста, хотя бы советом куда смотреть.
Смотреть можно сюда . Там решений - на любой вкус и цвет. От "классики", до "новомодных".
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сформировать запрос: over (partition) или курсор?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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