Как получить все значения после определенной даты для столбца в той же таблице, используя sql - PullRequest
0 голосов
/ 19 марта 2020

имеют таблицу базы данных со значениями

таблица: экзамен

name     department      result       date
mark      cse             pass       2019-03-04 10:20:11.000    
leo       cse             pass       2019-03-05 10:20:11.000
stan      cse             fail       2019-03-06 10:20:11.000
mark      cse             fail       2019-03-07 10:20:11.000    
leo       cse             pass       2019-03-08 10:20:11.000
stan      cse             fail       2019-03-09 10:20:11.000
mark      cse             pass       2019-03-10 10:20:11.000    
leo       cse             pass       2019-03-11 10:20:11.000
stan      cse             pass       2019-03-12 10:20:11.000
mark      cse             pass       2019-05-12 10:20:11.000

с использованием sql запроса значений пользователя после его последней даты неудачи, если проход отсутствует для пользователя, игнорируйте его данные

mark      cse             pass       2019-03-10 10:20:11.000
mark      cse             pass       2019-05-12 10:20:11.000
stan      cse             pass       2019-03-12 10:20:11.000

пробовал это


select exam.*
from exam
where exam.date > (select max(exam.date)
                from exam
                where exam.name = exam.name and exam.result = 'fail'
               );

Ответы [ 2 ]

2 голосов
/ 19 марта 2020
select * from exam tab1
where tab1.exam_date > (select max(tab2.exam_date)
                from exam tab2
                where tab1.name = tab2.name and tab2.result = 'fail'
               );

Ваш SQL правильный, но вам нужно предоставить псевдоним для имен таблиц в коррелированном подзапросе.

Демо: https://rextester.com/VKLZ36983

1 голос
/ 19 марта 2020

Это должно работать для вас.

SELECT e1.*
FROM exam e1
INNER JOIN
(
  SELECT name, max(date) MaxDate
  FROM exam 
  WHERE result = 'fail'
  GROUP BY name
) e2 on e1.name = e2.name and e1.date > e2.MaxDate
ORDER BY name

Вот демо .

...