Создайте столбец даты из существующего столбца даты как один день минус существующий столбец даты

У меня есть столбец даты, называемый Eff_Date, и имя столбца cmg, как показано ниже,

Eff_Date       cmg
-------------------
15-12-2017     F1
18-12-2018     F1
1-2-2019       F2

и я хочу создать новый столбец даты, который на один день предшествует дате в следующей строке в столбце eff_date, как показано ниже для конкретного cmg.

Eff_Date        NewDateColumn
-------------------------------
15-12-2017      17-12-2018
18-12-2018      18-12-2018
1-2-2019        1-2-2019

NewDateColumn будет иметь (17-12-2018 , так как следующая строка в Eff_date имеет 18-12-2018) для cmg = F1

Последняя строка будет такой же, как eff_date для конкретного cmg Пожалуйста помоги

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я добавил несколько строк в вашу таблицу, чтобы проверить обработку связей:

Eff_Date    cmg
12/15/2017  F1
12/18/2018  F1
1/15/2019   F1
1/20/2019   F1
1/22/2019   F1
6/7/2017    F2
8/9/2018    F2
10/10/2018  F2
1/2/2019    F2
1/2/2019    F2

Хотя есть много способов вычислить это, я думаю, что наиболее важным является то, что вам нужно ранжировать даты, чтобы определить следующую.

Я сделал это, определив несколько переменных:

=
VAR thisDateRank =
    RANKX (
        FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
        Table1[Eff_Date],
        ,
        ASC
    )
VAR maxDateRank =
    MAXX (
        FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
        Table1[Eff_Date]
    )
VAR nextDate =
    CALCULATE (
        MAX ( Table1[Eff_Date] ),
        FILTER (
            ALL ( Table1 ),
            Table1[cmg] = EARLIER ( Table1[cmg] )
                && RANKX (
                    FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
                    Table1[Eff_Date],
                    ,
                    ASC
                ) = thisDateRank + 1
        )
    )
RETURN
    IF ( Table1[Eff_Date] = maxDateRank, maxDateRank, nextDate - 1 )

Результат выглядит так

Eff_Date    cmg NewDateColumn
12/15/2017  F1  12/17/2018
12/18/2018  F1  1/14/2019
1/15/2019   F1  1/19/2019
1/20/2019   F1  1/21/2019
1/22/2019   F1  1/22/2019
6/7/2017    F2  8/8/2018
8/9/2018    F2  10/9/2018
10/10/2018  F2  1/1/2019
1/2/2019    F2  1/2/2019
1/2/2019    F2  1/2/2019

Другие вопросы по теме