возвращение результатов двух разных максимальных дат в виде столбцов одного и того же набора результатов

0

Я написал следующий запрос MySQL, который успешно возвращает список тем и самое последнее значение на конкретную дату:

SELECT t1.subject, t1.judgement AS judgement1, t1.assessor AS assessor1, t1.dateAchieved AS dateAchieved1 
FROM 'wwlpredictedoveralljudgements' t1 
WHERE pupilID='115137218853' && t1.dateAchieved = (
SELECT MAX(t2.dateAchieved) 
FROM 'wwlpredictedoveralljudgements' t2 
WHERE t1.pupilID = t2.pupilID && t1.subject=t2.subject && dateAchieved<='2018-01-25 00:00:00')

Он работает точно так, как мне нужно. То, что я хочу сделать, это иметь еще 3 столбца: judment2, evaluationor2, dateAchieved2 со второй указанной даты. Я читал и пробовал различные объединения и подзапросы, но мне не удалось получить рабочий результат.

Результат выглядит следующим образом:

Изображение 174551

Мне нужны дополнительные 3 столбца, но со второй отключенной датой во втором выборе MAX. Есть ли у кого-нибудь идеи, как это сделать?

  • 0
    Вопрос неясен без структуры таблицы / примера данных и исключенного вывода read meta.stackoverflow.com/questions/271055/…
  • 0
    Неясно, вернет ли ваш существующий запрос одну или несколько строк или обогащенный запрос вернет одну или несколько строк.
Показать ещё 2 комментария
Теги:

1 ответ

0

решена. Решение для кого-то другого с аналогичной проблемой... осталось присоединиться к той же таблице со вторым условием WHERE.

SELECT t1.pupilID, t1.subject, t1.judgement AS judgement1, t1.assessor AS assessor1, t1.dateAchieved AS dateAchieved1 , t3.judgement AS judgement2, t3.assessor AS assessor2, t3.dateAchieved AS dateAchieved2 
FROM 'wwlpredictedoveralljudgements' t1 
LEFT JOIN wwlpredictedoveralljudgements t3 ON t3.pupilID=t1.pupilID && t3.subject=t1.subject
WHERE t1.pupilID='084601821376' && t1.dateAchieved = (
SELECT MAX(t2.dateAchieved) FROM 'wwlpredictedoveralljudgements' t2 
WHERE t1.pupilID = t2.pupilID && t1.subject=t2.subject && dateAchieved<='2018-01-25 00:00:00') && t3.dateAchieved = (
SELECT MAX(t4.dateAchieved) 
FROM 'wwlpredictedoveralljudgements' t4 WHERE t3.pupilID = t4.pupilID && t3.subject=t4.subject && dateAchieved<='2018-03-25 00:00:00')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню