Как написать запрос предложения IN, чтобы заменить значение null для параметра значения

Я пишу запрос, в котором предложение where имеет предложение IN, и в этом разделе IN имеется большое количество значений, я хочу получить результат таким образом, чтобы, если в таблице нет значения для значения, указанного в предложении IN, тогда необработанное, содержащее 0 или null для этого значения. например..

 выберите возраст, пол, date_joining от emp, где name IN ('amit', 'john', 'paul', 'dilip')

Теперь предположим, что для этого запроса данные для john и paul не существуют в базе данных, тогда результат должен выглядеть следующим образом ..

 21 мужчина 21-AUG-2011
 null null null
 null null null
 25 мужчин 9-авг-2010

мы можем также иметь 0 вместо нуля, если null невозможен

Благодаря…

select filter.name , emp.age , emp.sex , emp.date_joining from ( values ('amit'), ('john'), ('paul'), ('dilip') ) filter(name) left join emp on emp.name = filter.name 

Живой пример в SQL Fiddle.

Для более старых значений SQL Server замените строку на values :

 from ( select 'amit' union all select 'john' union all select 'paul' union all select 'dilip' ) filter(name) 

Вы также можете использовать общее выражение таблицы для получения этого результата:

 ;With AllEmpDetails as ( Select [Name] from emp UNION Select 'amit' UNION Select 'john' UNION Select 'paul' UNION Select 'dilip' )Select AllEmpDetails.Name, e2.Age, e2.Sex, e2.date_joining from AllEmpDetails Left Join emp e2 on e2.[Name] = AllEmpDetails.Name 

В моей базе данных я уже добавил детали для amit и dilip, поэтому я использовал UNION так как вы можете легко получить подробную информацию о доступных сотрудниках. С другой стороны, вы можете использовать UNION ALL с Distinct .

Давайте будем гением компьютера.