Чтобы получить все строки из T1
при присоединении к таблице T2
, в которой отсутствуют строки 2 и 4, необходимо использовать левое внешнее объединение .Для строк 2 и 4 зарплата будет нулевой.
Чтобы заменить нулевое значение чем-то другим, вы можете использовать coalesce .Coalesce возвращает первый ненулевой аргумент.
Так как поле salary
объявлено как поле int
, и вы хотите No Salary
в качестве вывода, где нет зарплаты, вам нужно cast int
до varchar
, прежде чем использовать его в качестве аргумента в coalesce.
declare @T1 table(id int, name varchar(10))
declare @T2 table(id int, salary int)
insert into @T1 values(1, 'Sue')
insert into @T1 values(2, 'Sarah')
insert into @T1 values(3, 'Nick')
insert into @T1 values(4, 'james')
insert into @T2 values(1, 10000)
insert into @T2 values(3, 9000)
select
T1.id,
T1.name,
coalesce(cast(T2.salary as varchar(10)), 'No Salary') as salary
from @T1 as T1
left outer join @T2 as T2
on T1.id = T2.id
Результат
id name salary
----------- ---------- ----------
1 Sue 10000
2 Sarah No Salary
3 Nick 9000
4 james No Salary