С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 29.11.2022
Сообщений: 61

Достать максимальную дату одной колонки, максимальную дату второй колонки, и данные, которые им соответствуют

14.05.2024, 16:59. Показов 919. Ответов 11

Студворк — интернет-сервис помощи студентам
В общем, есть у меня следующий запрос (ниже пропишу), я хочу выбрать данные следующим образом
id, Date_CAR, Level_CAR, Date_ANK, Level_ANK, при этом Date_CAR, Level_CAR должнывыбраться только, если RownNum_CAR =1, а Date_ANK, Level_ANK должны выбраться только, если RownNum_ANK =1

т.е., к примеру есть следующая таблица
id Date_CAR Level_CAR Date_ANK Level_ANK RownNum_CAR RownNum_ANK
2 2024-04-23 low 2021-02-23 medium 1 2
2 2022-02-15 high 2023-03-07 low 2 1

я хочу, чтобы в конечном итоге было
id Date_CAR Level_CAR Date_ANK Level_ANK RownNum_CAR RownNum_ANK
2 2024-04-23 low 2023-03-07 low 1 1

Мой запрос в ms sql:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
WITH Info AS(
 
 
 
SELECT 
ID
,Date_CAR
,Level_CAR
,Date_ANK
,Level_ANK
 
,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date_CAR DESC) AS RownNum_CAR
,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date_ANK DESC) AS RownNum_ANK
FROM (
 
        SELECT 
        ccm.Code AS 'ID'
        ,CONVERT(DATE, ccpm.ELApprovalDate) AS 'Date_ANK'
        ,CONCAT(cecsdpm.RiskLeve, ' = ', cecsdpm.NameRiskLevel) AS 'Level_ANK'
        ,CONVERT(DATE,ccm.ElApprovalDate) AS 'Date_CAR'
        ,CONCAT(cecsdm.RiskLeve, ' = ', cecsdm.NameRiskLevel) AS 'Level_CAR'
        FROM InsightDataLake.Creatio.Contact_ AS ccm 
        LEFT JOIN InsightDataLake.Creatio.ContactProfile_ AS ccpm 
            ON ccm.Id = ccpm.ContactId
            AND ccm.End_Date >= getdate()
            AND ccm.is_deleted = 0
            AND ccpm.End_Date >= getdate()
            AND ccpm.is_deleted = 0
            AND ccpm.ELStatus = 'Approved'
        LEFT JOIN InsightDataLake.Creatio.ELContactStatusData_ AS cecsdm 
            ON ccm.Id = cecsdm.ContactId
            AND cecsdm.End_Date >= getdate()
            AND cecsdm.is_deleted = 0
        LEFT JOIN InsightDataLake.Creatio.ELContactStatusDataProfile_ AS cecsdpm  
            ON ccpm.Id = cecsdpm.CustomerProfileId
            AND cecsdpm.End_Date >= getdate()
            AND cecsdpm.is_deleted = 0
 
 
 
 
) AS AA
 
 
)
 SELECT *
 FROM Info 
 ORDER BY 1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2024, 16:59
Ответы с готовыми решениями:

Данные за Максимальную дату
Запрос select distinct p.t,t.kk,t.rt,t.date from tab t join ( select 1 t, 1 d1, 10 d2 from tab union all ...

Найти максимальную дату среди значений в одной ячейке
Добрый день! Помогите, пожалуйста, написать функцию (или формулу, если это возможно), чтобы находить самую позднюю дату среди указанных в...

Файл содержит записи о дате. Указать максимальную дату для второй половины года
Помогите с решением Создать файл, содержащий записи о дате: день (1..31), месяц (1..12), год (00..99). Обработать этот файл и указать...

11
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
15.05.2024, 09:04
Ииии? Вопрос то в чем?
Просто похвастаться захотелось?

Ну... Норм. Мы в восхищении. :-)
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.05.2024, 10:16
тот запрос ни как не соответствует показанным табличкам и он ни каким образом не свернет в одну две записи с одним ид

Добавлено через 43 минуты
внешний запрос можно примерно в таком духе сделать
T-SQL
1
2
3
select isnull(i1.id,i2.id) id,i1.Date_CAR,i1.Level_CAR,i2.Date_ANK,i2.Level_ANK
   from info i1 full join info i2 on i1.id=i2.id
   where i1.RownNum_CAR=1 and i2.RownNum_ANK=1
0
0 / 0 / 0
Регистрация: 29.11.2022
Сообщений: 61
15.05.2024, 10:45  [ТС]
Цитата Сообщение от uaggster Посмотреть сообщение
Ииии? Вопрос то в чем?
Просто похвастаться захотелось?
Ну... Норм. Мы в восхищении. :-)
Нет, он просто работает не совсем правильно, и хотела, чтобы мне помогли разобраться, а то я запуталась. Вот и все. Никакого хвастовства.

Добавлено через 2 минуты
Цитата Сообщение от Аватар Посмотреть сообщение
тот запрос ни как не соответствует показанным табличкам и он ни каким образом не свернет в одну две записи с одним ид
Тот запрос выводит первую указанную таблицу, но проблема в том, что я запуталась во флагах и поняла, что максимальные даты для записи не всегда могут совпадать, и планировала это решить через кейс или иф, но в итоге я переписала запрос, на подзапросы маленькие, чтобы флаги (роунамберы) были в разных подзапросах и их можно было фильтровать. Но спасибо за помощь)
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.05.2024, 10:53
Цитата Сообщение от cherepashka Посмотреть сообщение
но в итоге я переписала запрос, на подзапросы маленькие
в твоем запросе идея правильная, осталось только внешний запрос как у меня
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
15.05.2024, 12:42
Цитата Сообщение от cherepashka Посмотреть сообщение
Вот и все.
Ну так надо об этом прямо писать. Как мы можем догадаться о Ваших проблемах, если Вы их не озвучиваете?
 Комментарий модератора 
Ознакомьтесь еще раз с правилами форума: пункт 4.7 - он прямо для Вас.
0
0 / 0 / 0
Регистрация: 29.11.2022
Сообщений: 61
15.05.2024, 13:26  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Ну так надо об этом прямо писать. Как мы можем догадаться о Ваших проблемах, если Вы их не озвучиваете?
Так я озвучила свою основную задачу, выбрать максимальную дату в одной колонкеи во второй и объединить соответсвующие записи в одну строку, я сделала их нахождение с помощью ROW_NUMBER(), и чтобы пользователи как кротики слепыши не гадали, предоставила свой запросик, который у меня был, предоставила таблицу примерную, которая получается при выполнении запроса и ожидаемый результат. Я же блинчики не буду писать, мол, давайте собиремся и будем разюирать логику запросу максимально точно, просто как я написала мне нужно было выбрать данные Date_CAR, Level_CAR только, если RownNum_CAR =1, а Date_ANK, Level_ANK должны выбраться только, если RownNum_ANK =1, в одну строку. Ну я это и описала в задаче. А челик на меня наехал, что я хвастаюсь.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
15.05.2024, 13:34
Цитата Сообщение от cherepashka Посмотреть сообщение
Так я озвучила свою основную задачу
Вы озвучили то, что Вы хотите, привели какой-то запрос... И что? Что-то не работает? Если да - то что именно не так? Именно самого вопроса у Вас и нет.
Цитата Сообщение от cherepashka Посмотреть сообщение
А челик на меня наехал, что я хвастаюсь.
Никакой, непонятный мне, "челик" ни на кого не "наехал". Было высказано вполне себе резонное недоумение: к чему все это написано, если нет вопроса.
0
0 / 0 / 0
Регистрация: 29.11.2022
Сообщений: 61
15.05.2024, 15:02  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Вы озвучили то, что Вы хотите, привели какой-то запрос... И что? Что-то не работает? Если да - то что именно не так? Именно самого вопроса у Вас и нет.
Вот как звучит задача Достать максимальную дату одной колонки, максимальную дату второй колонки, и данные, которые им соответствуют
В описании написано: я хочу, чтобы в конечном итоге было
Извините, что не написала, КАК ЭТО СДЕЛАТЬ?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.05.2024, 15:32
Цитата Сообщение от cherepashka Посмотреть сообщение
Извините, что не написала, КАК ЭТО СДЕЛАТЬ?
три человека тебя не поняли. это много или мало? понятливых вообще не нашлось. можешь доказывать еще 100500 постов что ты права, но от этого понятливых не прибавится ))
0
0 / 0 / 0
Регистрация: 29.11.2022
Сообщений: 61
15.05.2024, 15:51  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
три человека тебя не поняли. это много или мало? понятливых вообще не нашлось. можешь доказывать еще 100500 постов что ты права, но от этого понятливых не прибавится ))
Ой, ну и ладно, как скажите))
0
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
15.05.2024, 15:59
А вы говорите: "Чатгпт, чатгпт! Профессия программиста умрет!"
Ну да, ну да...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2024, 15:59
Помогаю со студенческими работами здесь

Выбрать максимальную дату
Есть таблица с тремя полями: - numeric - varchar - datetime. Пример нескольких строк: 1. Стол 20.01.1998 00.00.00 2....

Запрос на максимальную дату
Как правильно вытащить максимальную дату для каждого LOAN_ID. У меня есть таблица: Необходимо вытащить для каждого ID вытащить...

Получить максимальную дату до текущей
Всем здравствуйте! Собственно в названии темы всё написано. Есть набор данных, надо выбирать дату ту которая была перед текущей, это не...

Как оставить максимальную дату из группировки
Здравствуйте. Подскажите как отобрать из исходной таблицы(3 колонки: FIO, Model, Data) данные так, чтобы "Из одинаковых FIO...

Выбрать максимальную дату по нескольким периодам
Друзья, подскажите, пожалуйста. Есть данные по клиенту, которые показывают время его нахождения на просрочке по платежу. Я их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru