Size: a a a

SqlCom.ru - уголок MS SQL

2021 June 18

KT

Konstantin Taranov in SqlCom.ru - уголок MS SQL
начальника не ругайся, сегодня пятница, чуть потрындели, думаешь легко всю неделю вопросы по SQL Server читать. ушли работать.
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
Переслано от Лучший ник
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
Переслано от Лучший ник
Подскажите пожалуйста, как в моём случае  вывести без дубликатов записи только с максимальным Сальдо? в примере на скрине максимальное сальдо находится в Rank_ph 2 для данной записи
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
перекопал весь интернет(
источник

A

Alex in SqlCom.ru - уголок MS SQL
Напишите, какой результат вы хотите получить - колонки и значения, а то непонятно
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
Мне нужны номера телефонов без дубликатов только тех ID в которых максимальное Сальдо. В выделенном примере оно во втором вхождении
источник

A

Alex in SqlCom.ru - уголок MS SQL
У вас нет колонки ID на скрине. OfficeId?
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
AbonentId
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
блин, я не так объяснил...тут номера телефонов повторяются. а Rank_ph показывает вхождения этих телефонов
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
вот мне нужны записи с номерами телефонов с максимальным сальдо
источник

A

Alex in SqlCom.ru - уголок MS SQL
Максимальное сальдо - то есть вам нужны все строчки, где  (в вашем примере) сальдо = 335.16 - одна строка в итоге? - Просто там и больше есть1252.5, например.
источник

Л

Лучший ник in SqlCom.ru - уголок MS SQL
1252 то уже для другого номера телефона.
Объясню пример что я показал:
Есть 3 одинаковых номера телефона.
У первого вхождения этого номера сальдо - (-7.10)
У второго вхождения этого номера - 335.16
У третьего вхождения этого номера - 213,16.
Мне нужно выбрать только то вхождение, где максимальное сальдо среди этих вхождений, в выделенном на скрине случае это 335.16
источник

A

Alex in SqlCom.ru - уголок MS SQL
Используйте row_number() для того, чтобы отметить эти вхождения признаком, а потом по нему отфильтруйте
select 
ваши колонки
from (
select
ваши колонки
,row_number() over (partition by ТЕЛЕФОН order by SALDO desc) as RN
from tbl
) t
where t.RN = 1
источник

ВБ

Владимир Боярских... in SqlCom.ru - уголок MS SQL
Есть ещё такой компактный вариант (t-sql специфичный)
select top 1 with ties ... from tbl
order by row_number() over (partition by ТЕЛЕФОН order by SALDO desc)
источник

KT

Konstantin Taranov in SqlCom.ru - уголок MS SQL
о, пошли советы по использованию недокументированных подходов для решения стандартных задач, я такое люблю.

предлагаю пойти дальше и обернуть это все во view с опцией with schemabinding

ТЕЛЕФОН правильно надо [ТЕЛЕФОН] ? 100 лет русскую версию SQL Server не пробовал, там подвезли поддержку кириллицы для использования в запросах?
источник

O

Oleg T in SqlCom.ru - уголок MS SQL
РУсские названия поддерживаются норм, если без пробелов и т.п. мракобесия.
источник

A

Alex in SqlCom.ru - уголок MS SQL
Это рофл такой, что ли? Телефон большими буквами - это колонка с номером телефона, я не знаю, как она называется.
Странно, что вы на "ваши колонки" не обратили внимания)
источник

А

Артем in SqlCom.ru - уголок MS SQL
Будет работать в 3-5 раза дольше.
Если переписать на группировку row number, будет работать в 2 раза быстрее
источник

A

Alex in SqlCom.ru - уголок MS SQL
+ +, у меня тоже дольше работает с
top N with ties order by row_number() ...
источник

KT

Konstantin Taranov in SqlCom.ru - уголок MS SQL
так я не в теме, просто спросил и у другого человека. рофл не знаю что такое, ролл с курицей - знаю.
источник