Объединение двух таблиц с нулевыми значениями — SQL

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

У меня есть две таблицы, как показано ниже. Я хочу объединить эти две таблицы для даты 2/04/2021, как в выходной таблице. Есть вероятность получить нулевые значения для любой таблицы, как показано на выходе.

student_details

 Auto_id    StudentID    StudentName         LastAttendedDate
1            AAA          RAGHAV           8/25/2020 1:40:35 AM
2            BBB          VARUN            2/04/2021 5:40:23 AM
3            AAA          RAGHAV           2/04/2021 1:40:25 AM
4            AAA          RAGHAV           2/04/2021 3:40:35 AM
5            BBB          VARUN            10/01/2021 9:40:35 AM
6            CCC          MAYA             2/04/2021 8:40:35 AM
 

exam_details

 Auto_id   StudentID      exam_name          exam_date  
1            AAA          PRILIMS          2/04/2021 1:40:35 AM 
2            BBB          MAINS            2/04/2021 5:40:35 AM
3            AAA          PRILIMS          2/04/2021 8:40:35 AM 
4            GGG          PRILIMS          2/04/2021 1:10:35 AM 
5            GGG          MAINS            2/04/2021 2:10:35 AM 
6            GGG          MAINS            2/05/2021 2:10:35 AM 
 

Вывод

 StudentID        LastAttendedDate          exam_name      exam_date          
  BBB          2/04/2021 5:40:23 AM         MAINS        2/04/2021 5:40:35 AM
  AAA          2/04/2021 1:40:25 AM         PRILIMS      2/04/2021 8:40:35 AM
  AAA          2/04/2021 3:40:35 AM         MAINS        2/04/2021 8:40:35 AM
  CCC          2/04/2021 8:40:35 AM          NULL          NULL
  GGG              NULL                      MAINS       2/04/2021 2:10:35 AM 
 
  • Должен быть указан идентификатор студента и LastAttendedDate из таблицы ‘student_details’ на дату 2/04/2021,
  • max(exam_date) (на дату 2/04/2021) студента должен присоединиться к строкам, если есть.
  • Даже если в ‘student_details’ нет данных, он должен показывать max (exam_date) student.

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

1. Почему вы используете неподдерживаемую версию SQL Server?

2. Добавьте код T-SQL, который вы пытались выполнить, а не только перечислите свои требования. Ваш вопрос привлечет отрицательные голоса, потому что SO не является сервисом для написания кода.

Ответ №1:

Я думаю, вы хотите full join , но после объединения двух таблиц:

 select coalesce(sd.studentid, ed.studentid) as studentid,
       sd.studentname, sd.lastattendeddate,
       ed.exam_name, ed.exam_date
from (select studentid, studentname, max(lastattendeddate) as lastattendeddate
      from student_details
      group by studentid, studentname
     ) sd full join
     (select studentid, exam_name, max(exam_adte) as exam_date
      from exam_details
      group by studentid, exam_name
     ) ed
     on sd.studentid = ed.studentid;