Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с запросом  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
есть таблица Table(a int, b varchar(max))

на каждое "a" может быть несколько "b"

нужно выбрать все "a" и "b" максимальной длины для каждого
4 апр 12, 20:33    [12367302]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Шпунтик,

PROC SQL;
	CREATE TABLE TT(a int, b varchar(128));

	INSERT INTO TT
	VALUES (1,'zsdfasdfasf');

	INSERT INTO TT
	VALUES (1,'zsdfasdfasf123123');

	INSERT INTO TT
	VALUES (1,'zsdfasdfasf123124');

	INSERT INTO TT
	VALUES (2,'zsdfasdfasf');

	INSERT INTO TT
	VALUES (2,'11111111111111111111zsdfasdfasf');

	SELECT a, b
	FROM TT
	GROUP BY a
	HAVING len(b)=max(len(b));
QUIT;


проблема в том, что попадает не одно, а несколько, если у них одинаковая длина
4 апр 12, 20:37    [12367316]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Шпунтик, а так?
select top 1 with ties * from tt order by row_number() over (partition by a order by len(b) desc, b) 
4 апр 12, 20:50    [12367351]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Шпунтик
проблема в том, что попадает не одно, а несколько, если у них одинаковая длина


Тогда, здравый смысл диктует формализовать процесс отбора "одного" из нескольких валидных кандидатов?
5 апр 12, 09:41    [12368624]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить