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

Откуда:
Сообщений: 2
Коллеги , прошу помочь - второй день ломаю голову ... (опыт есть но небольшой)

Есть простенькая таблица товаров ( Nr , Name ). Nr может повторятся. Name для одинаковых номеров может быть разной (и пустой).
Как вывести записи с уникальными значения Nr , но с максимальным по длине Name (Если записей с одинаковым максимум несколько можно брать любую)

MS SQL 2012
5 фев 16, 15:57    [18778365]     Ответить | Цитировать Сообщить модератору
 Re: Вывод уникальных значений с условием максимума по длине второго поля :(  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 3602
urfin2016,

SELECT TOP 1 WITH TIES Nr, Name FROM 
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name  
) A
ORDER BY ROW_NUMBER() OVER (PARTITION BY Nr ORDER BY LEN(Name) DESC)
5 фев 16, 16:00    [18778392]     Ответить | Цитировать Сообщить модератору
 Re: Вывод уникальных значений с условием максимума по длине второго поля :(  [new]
urfin2016
Member

Откуда:
Сообщений: 2
Офанареть ! Спасибо. :) Работает !!!
5 фев 16, 16:10    [18778463]     Ответить | Цитировать Сообщить модератору
 Re: Вывод уникальных значений с условием максимума по длине второго поля :(  [new]
aleks2
Guest
Что за бред?
SELECT Nr, max(Name) as Name
  from
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name  
) A
group by Nr
5 фев 16, 19:26    [18779470]     Ответить | Цитировать Сообщить модератору
 Re: Вывод уникальных значений с условием максимума по длине второго поля :(  [new]
iap
Member

Откуда: Москва
Сообщений: 46068
aleks2
Что за бред?
SELECT Nr, max(Name) as Name
  from
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name  
) A
group by Nr
А если так?
SELECT Nr, max(Name) as Name
  from
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name UNION ALL  
	SELECT 2 AS Nr, 'Z' AS Name  
) A
group by Nr
5 фев 16, 19:31    [18779487]     Ответить | Цитировать Сообщить модератору
 Re: Вывод уникальных значений с условием максимума по длине второго поля :(  [new]
msLex
Member

Откуда:
Сообщений: 5219
aleks2
Что за бред?
SELECT Nr, max(Name) as Name
  from
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name  
) A
group by Nr



urfin2016
уникальными значения Nr , но с максимальным по длине Name
5 фев 16, 19:33    [18779501]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить