[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как правильно сделать Group by?
Strannik
Добрый день.

Используется MSSQL 2008

SELECT TOP 20 
p.id_price as p_id_price,
p.id_service as p_id_service,
p.name as p_name,
p.name_original as p_name_original,
p.id_producer_country as p_id_producer_country,
p.id_firm as p_id_firm,
f.name as f_name,
f.priority as f_priority,
f.address as f_address,
f.phone as f_phone,
city.name as city_name,
pc.name as pc_name
FROM Price p
left join Firm f on f.id_service = p.id_service AND f.id_city = p.id_city AND f.id_firm = p.id_firm
left join City city on city.id_city = p.id_city left join Producer_country pc on pc.id_producer_country = p.id_producer_country
left join Dogovor d on d.id_service=p.id_service AND d.id_city=p.id_city AND d.id_firm=p.id_firm
WHERE
id_price NOT IN (
SELECT TOP 20 p.id_price
FROM Price p
left join Firm f on f.id_service = p.id_service AND f.id_city = p.id_city AND f.id_firm = p.id_firm
left join City city on city.id_city = p.id_city
left join Producer_country pc on pc.id_producer_country = p.id_producer_country
left join Dogovor d on d.id_service=p.id_service AND d.id_city=p.id_city AND d.id_firm=p.id_firm
WHERE p.id_city='495' AND p.include='1' AND p.blocked='0' AND f.blocked='0' AND f.dogovor='1'
AND d.end_date >= '20131108 02:37:03'
AND (p.name LIKE '% tes_ %' OR p.name LIKE 'tes_ %' OR p.name LIKE '% _tes_%')
ORDER BY f.priority DESC
)
AND p.id_city='495'
AND p.include='1'
AND p.blocked='0'
AND f.blocked='0'
AND f.dogovor='1'
AND d.end_date >= '20131108 02:37:03'
AND (p.name LIKE '% tes_ %' OR p.name LIKE 'tes_ %' OR p.name LIKE '% _tes_%')

ORDER BY f.priority DESC


Проблема том, что нужно сделать группировку по полю f.name.
Т.е. если в таблице присутствуют несколько строк с одинаковым f.name, результате должна выводится лишь одна строка из всех найденных строк с одинаковым f.name, иначе говоря результатах не должно быть строк с одинаковым f.name.

Если в таблице существуют несколько строк с одинаковым f.name, то должна выбираться строка наиболее соответствующая поиску(или просто последняя строка по дате).

Подскажите как сделать такую выборку?

P.S.: реально ли нумеровать строки по "наиболее соответствующая поиску(или просто последняя строка по дате)." в пределах одинаковых f.name и потом выбирать 1е номера? и как это сделать если да?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.