#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, применить текущий файл, иначе другой