Фильтр по дате с условием обращения SQL Server

#sql-server-2012

#sql-server-2012

Вопрос:

У меня есть 2 таблицы, в одной из которых хранится история записи следующим образом

 CREATE TABLE Student
(
    StudentId INT,
    StudentName NVARCHAR(200)
)

CREATE TABLE StudentHist
(
    StudentHistId INT,
    BranchId INT,
    StudentId INT,
    ExitDate DATE
)

INSERT INTO Student 
VALUES (1, 'ABC'), (2, 'PQR')

INSERT INTO StudentHist 
VALUES (1, 1, 1, null), (2, 2, 1, '2016-01-01'),
       (3, 2, 2, '2017-01-01')

SELECT S.StudentName
FROM Student S 
INNER JOIN StudentHist SH ON S.StudentId = SH.StudentId
                          AND (SH.ExitDate IS NULL OR SH.ExitDate >= getdate())
                          AND SH.BranchId = 2
  

В настоящее время у меня есть запрос, который выдает записи, в которых дата выхода равна нулю, что мне нужно, так это условие переключения, в котором он проверит, что дата равна нулю, и выполнит текущий код, если не получит последнюю по histid и получит дату

https://dbfiddle.uk/?rdbms=sqlserver_2017amp;fiddle=1036cec8a82566534665c89f7279ebcb

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

1. Пожалуйста, предоставьте пример того, как должны выглядеть ваши результаты.

2. Если я фильтрую с помощью branch2, я не получаю данные там, где они должны давать результат

3. Не могли бы вы, пожалуйста, перефразировать свой вопрос? Согласно вашему условию, он не вернет никаких данных.

4. в фильтре branch2 ваше условие даты не допускает данные в текущих необработанных данных.

5. Да, но что мне нужно, так это независимо от того, какие мне нужны данные с этим условием, мне нужно, например, когда date равно null, применить текущий файл, иначе другой