#c# #sql #database #ms-access
#c# #sql #База данных #ms-access
Вопрос:
Я хочу получить, RollNo
присутствует ли оно при выполнении определенных условий, в противном случае оно должно возвращать -1. Но в моем случае оно возвращается, RollNo
когда оно присутствует, в противном случае оно не возвращает ничего.
SQL находится под:-
SELECT iif(isnull(RollNo),-1,RollNo) from students where SName = "sf" and FName= "da" and
DOB=#7/16/2020# and ClassID = 0
Ответ №1:
Хм … Если вы всегда хотите возвращать ровно одну строку, тогда я бы предложил агрегирование:
SELECT NZ(MAX(RollNo), -1)
FROM students
WHERE SName = "sf" and FName= "da" and DOB=#7/16/2020# and ClassID = 0;
Если ничто не соответствует WHERE
предложению, то MAX(RollNo)
возвращается NULL
— который преобразуется в -1
by NZ()
.
Комментарии:
1. Это работает в access. Но я должен получить это в коде C #.
nz
не работает в c#2. @MuhammadRizwan Сработает ли это:
SELECT IIF(ISNULL(MAX(RollNo)), -1, MAX(RollNo)
?3. @TimBiegeleisen это работает. Я проверил этот запрос.
4. @MuhammadRizwan . . . Можете ли вы определить, какая часть запроса не работает? Возможно,
COALESCE()
работает.NZ()
определенно является частью MS Access: techonthenet.com/access/functions/advanced/nz.php .5. @MuhammadRizwan . . . Вы можете заменить его на
IIF(MAX(RollNo) IS NULL, MAX(RollNo), -1)
.
Ответ №2:
Это возвращает ровно одну строку с полем RollNo
.
SELECT iif(isnull(max(RollNo)),-1,max(RollNo)) from students where SName = "sf" and
FName= "da" and DOB=#7/16/2020# and ClassID = 0
если условия в предложении where удовлетворяют ему, возвращает RollNo
в противном случае возвращает -1
Комментарии:
1. Интересно
ISNULL
(метод VBA) работал с подключением доступа ODCB / OLEDB. Лучше использоватьIS NULL
выражение SQL.2. Я не знаю, но это работает.
IS NULL
выражение также сработало.