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

Откуда:
Сообщений: 11
Доброго времени суток!
Нужна помощь с запросом!

Есть результат запроса:
id LocationX LocationY LocationZ Name
03F5AC5BA504 -30.73 194.46 21.34 A
03F5AC5BA504 -30.73 194.46 21.34 A
4B2A125CD104 -31.11 194.46 21.34 A
4B2A125CD104 -31.11 194.46 21.34 B
Из него видно, что по столбцу ID по 2 одинаковые записи с одинаковыми координатами, но втором случае одна запись имеет Name "A", а вторая "B"
Вопрос: как сделать чтобы запрос выдавал 1 строку с одинаковыми ID и разными Name?

Какой должен быть результат запроса:
id LocationX LocationY LocationZ Name
4B2A125CD104 -31.11 194.46 21.34 B
14 дек 18, 08:57    [21763645]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174
А почему выбрана именно та запись, где Name='B'?

А так:

SELECT id, LocationX, LocationY, LocationZ, MAX(Name) Name
FROM (...) AS query
GROUP BY id, LocationX, LocationY, LocationZ
14 дек 18, 09:42    [21763675]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
unforcer
Member

Откуда:
Сообщений: 11
Akina,

из пары, где разные Name можно выводить любой значение..
14 дек 18, 09:59    [21763693]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
unforcer
Member

Откуда:
Сообщений: 11
Akina,

SELECT id, LocationX, LocationY, LocationZ, MAX(Name) Name
FROM (...) AS query
GROUP BY id, LocationX, LocationY, LocationZ

этот запрос будет отбрасывать только одну запись с разными Name, но одинаковые будут попадать в результат
14 дек 18, 10:01    [21763694]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174
unforcer
этот запрос будет отбрасывать только одну запись с разными Name, но одинаковые будут попадать в результат
Картинка с другого сайта. Вы это серьёзно?
14 дек 18, 11:00    [21763769]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
unforcer
Member

Откуда:
Сообщений: 11
Akina, вполне

id	LocationX	LocationY	LocationZ	ItemName
03F5AC5BA504	-30.73	194.46	21.34	A
4B2A125CD104	-31.11	194.46	21.34	B
14 дек 18, 13:18    [21763983]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
unforcer
но одинаковые будут попадать в результат
Добавьте
having count(distinct Name) > 1
14 дек 18, 13:28    [21764003]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174
unforcer, ааа... то есть нужны только записи с теми ID, у которых имеется два или более разных Name? а те, у кого всё ровно, не нужны... Я просто не так понял задачу.
14 дек 18, 14:45    [21764083]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
unforcer
Member

Откуда:
Сообщений: 11
Akina, invm
Спасибо за помощь, работает!
14 дек 18, 15:10    [21764119]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4364
invm
unforcer
но одинаковые будут попадать в результат
Добавьте
having count(distinct Name) > 1


WITH C AS 
(
	SELECT 
		id, LocationX, LocationY, LocationZ, Name, 
		RN = ROW_NUMBER() OVER (PARTITION BY id, LocationX, LocationY, LocationZ ORDER BY (SELECT NULL))
	FROM (...) AS query
)
SELECT id, LocationX, LocationY, LocationZ, Name FROM C 
WHERE RN = 2
14 дек 18, 15:55    [21764174]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SELECT  [new]
invm
Member

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

Опять спешите и не думаете...
14 дек 18, 16:32    [21764215]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить