我的一个同事有一个 sql 查询的问题:-
以以下为例,两个临时表:-
select 'John' as name,10 as value into #names
UNION ALL SELECT 'Abid',20
UNION ALL SELECT 'Alyn',30
UNION ALL SELECT 'Dave',15;
select 'John' as name,'SQL Expert' as job into #jobs
UNION ALL SELECT 'Alyn','Driver'
UNION ALL SELECT 'Abid','Case Statement';
我们在表上运行以下查询来给我们一个连接的结果集:-
select #names.name, #names.value, #jobs.job
FROM #names left outer join #jobs
on #names.name = #jobs.name
name value job
John 10 SQL Expert
Abid 20 Case Statement
Alyn 30 Driver
Dave 15 NULL
由于#jobs 表中不存在“Dave”,因此按预期为他提供了一个NULL 值。
我的同事想要修改查询,以便为每个 NULL 值赋予与前一个条目相同的值。
所以上面将是: -
name value job
John 10 SQL Expert
Abid 20 Case Statement
Alyn 30 Driver
Dave 15 Driver
请注意,戴夫现在是“司机”
序列中可能有多个 NULL 值,
name value job
John 10 SQL Expert
Abid 20 Case Statement
Alyn 30 Driver
Dave 15 NULL
Joe 15 NULL
Pete 15 NULL
在这种情况下,Dave、Joe 和 Pete 都应该是“Driver”,因为“Driver”是最后一个非空条目。