Получение значений предыдущей записи в виде строк в текущей записи по идентификатору пользователя в mysql

#mysql #lag #partition

#mysql #задержка #раздел

Вопрос:

Я пытаюсь создать набор данных MySQL, в котором есть записи из предыдущего исследования (хирургическое исследование с первым исследованием, имеющим значение 1), а также для этого идентификатора пользователя. У каждого пользователя может быть несколько исследований. Я пытаюсь использовать функцию задержки для получения предыдущих данных исследования. Я получаю повторяющиеся значения для исследования 1 при попытке использовать функцию задержки.

 
WITH Complete_Data AS (
    SELECT *
    FROM Data
    GROUP BY UserId, studyno
)
SELECT *, LAG(indication_of_failure, 1)
OVER (
        PARTITION BY UserId
        ORDER BY studyno
    ) prev_study_indication_of_failure
    , 
    LAG(BCVA_State,1)
    OVER (
        PARTITION BY UserId
        ORDER BY studyno
    ) prev_study_BCVA
FROM 
    Complete_Data
    GROUP BY UserId, studyno
    ;
  

Я ожидаю нулей в prev_study_indication_of_failure и prev_study_BCVA, когда studyno = 1, но заполняется значениями, когда studyno>= 2.

Из-за повторяющихся записей для studyno = 1 я получаю значения в prev_study_indication_of_failure и prev_study_BCVA


Пример данных

На следующем изображении приведен фактический образец данных

Ожидаемый результат
Следующее изображение дает ожидаемый результат

Комментарии:

1. Почему у вас есть GROUP BY в ваших запросах? Вы не выполняете никакой агрегации.

2. Я добавил группу, думая, что это решит мою проблему, но, несмотря на это, результат остался прежним

3. Не могли бы вы предоставить некоторые образцы данных и ожидать результата?

4. Я добавил примерные данные и ожидаемый результат к приведенному выше вопросу