Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Телефон и клиенты. Группировка / 10 сообщений из 10, страница 1 из 1
27.08.2018, 09:40
    #39693534
kolya_tyurin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
Представим что у нас есть клиенты и их телефоны в одной таблице и есть еще дата добавления номера .
Так вот у номеров есть много клиентов.
Если клиент имеет больше 1 клиента то нужно вывести того клиента, который был последним(то есть добавлен позже всех).
Помогите решить проблему уже какой день не могу сделать.
Можно написать в процедуре, но лучше запросом.
Думаю нужно как то сгруппировать, но у меня ничего не получается.
...
Рейтинг: 0 / 0
27.08.2018, 09:43
    #39693537
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
kolya_tyurin,

авторЕсли клиент имеет больше 1 клиента то нужно вывести того клиента, который был последним
оргия какая-то.

Описывайте целиком с объектами и типами полей.
...
Рейтинг: 0 / 0
27.08.2018, 09:44
    #39693538
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
TaPaKkolya_tyurin,

авторЕсли клиент имеет больше 1 клиента то нужно вывести того клиента, который был последним
оргия какая-то.

Описывайте целиком с объектами и типами полей.

клиент моего клиента - не мой клиент
...
Рейтинг: 0 / 0
27.08.2018, 09:48
    #39693540
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
kolya_tyurin,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Select a.Клиент,
b.Телефон
From Клиенты a
Outer apply (
Select top 1 Телефон 
From Телефоны 
Where a.Клиент = Клиент
Order by ДатаДобавления desc
) b
...
Рейтинг: 0 / 0
27.08.2018, 09:50
    #39693543
kolya_tyurin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
TaPaK, ну я тут недавно, не знаю как красиво нарисовать. Но выглядит примерно так
Телефон Id_client
9043434434 123456 2018-08-20
9043434434 123457 2018-08-23
9043434434 123458 2018-08-21
И вот как вывести клиента "123457"
...
Рейтинг: 0 / 0
27.08.2018, 09:52
    #39693545
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
В смысле последнего по дате? FIRST(Client) OVER (PARTITION BY PhoneNum ORDER BY Date DESC)
...
Рейтинг: 0 / 0
27.08.2018, 09:56
    #39693549
kolya_tyurin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
Kopelly, дадаа вот это было мне нужно. Этот оператор OUTER APPLY. Спасибо большое))) наконец-то разберусь)) Спасибо)
...
Рейтинг: 0 / 0
27.08.2018, 09:57
    #39693550
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
kolya_tyurin,

да хоть OUTER APPLY, TOP 1 WITH TIES, ROW_NUMBER, FIRST_VALUE
...
Рейтинг: 0 / 0
27.08.2018, 09:58
    #39693551
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
kolya_tyurin,

Получается на одном телефоне несколько клиентов и нужно сопоставить номер только с последним клиентом?
Тогда:
Код: sql
1.
2.
3.
4.
Select * From (
Select *, row_number() over (Partition by Телефон Order by ДатаДобавления desc) as RN
From ТаблицаТелефонов)
Where RN = 1
...
Рейтинг: 0 / 0
27.08.2018, 19:48
    #39693942
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Телефон и клиенты. Группировка
kolya_tyurin,

задача стара, как мир, но раз в неделю регулярно возникает вопрос как её решить....
может уже кто оформит в виде статьи для Ф.А.К.а, чтобы не искать каждый раз топик с ответом по форуму...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Телефон и клиенты. Группировка / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]