Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
kolya_tyurin Member Откуда: Сообщений: 3 |
Представим что у нас есть клиенты и их телефоны в одной таблице и есть еще дата добавления номера . Так вот у номеров есть много клиентов. Если клиент имеет больше 1 клиента то нужно вывести того клиента, который был последним(то есть добавлен позже всех). Помогите решить проблему уже какой день не могу сделать. Можно написать в процедуре, но лучше запросом. Думаю нужно как то сгруппировать, но у меня ничего не получается. |
27 авг 18, 09:40 [21654581] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
kolya_tyurin,
оргия какая-то. Описывайте целиком с объектами и типами полей. |
||
27 авг 18, 09:43 [21654586] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
клиент моего клиента - не мой клиент ![]() |
||||
27 авг 18, 09:44 [21654587] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
kolya_tyurin,Select a.Клиент, b.Телефон From Клиенты a Outer apply ( Select top 1 Телефон From Телефоны Where a.Клиент = Клиент Order by ДатаДобавления desc ) b |
27 авг 18, 09:48 [21654589] Ответить | Цитировать Сообщить модератору |
kolya_tyurin Member Откуда: Сообщений: 3 |
TaPaK, ну я тут недавно, не знаю как красиво нарисовать. Но выглядит примерно так Телефон Id_client 9043434434 123456 2018-08-20 9043434434 123457 2018-08-23 9043434434 123458 2018-08-21 И вот как вывести клиента "123457" |
27 авг 18, 09:50 [21654593] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20974 |
В смысле последнего по дате? FIRST(Client) OVER (PARTITION BY PhoneNum ORDER BY Date DESC) |
27 авг 18, 09:52 [21654595] Ответить | Цитировать Сообщить модератору |
kolya_tyurin Member Откуда: Сообщений: 3 |
Kopelly, дадаа вот это было мне нужно. Этот оператор OUTER APPLY. Спасибо большое))) наконец-то разберусь)) Спасибо) |
27 авг 18, 09:56 [21654601] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
kolya_tyurin, да хоть OUTER APPLY, TOP 1 WITH TIES, ROW_NUMBER, FIRST_VALUE |
27 авг 18, 09:57 [21654602] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
kolya_tyurin, Получается на одном телефоне несколько клиентов и нужно сопоставить номер только с последним клиентом? Тогда: Select * From ( Select *, row_number() over (Partition by Телефон Order by ДатаДобавления desc) as RN From ТаблицаТелефонов) Where RN = 1 |
27 авг 18, 09:58 [21654603] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1507 |
kolya_tyurin, задача стара, как мир, но раз в неделю регулярно возникает вопрос как её решить.... может уже кто оформит в виде статьи для Ф.А.К.а, чтобы не искать каждый раз топик с ответом по форуму... |
27 авг 18, 19:48 [21655402] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |