私の同僚は、SQL クエリに問題があります:-
例として、次の 2 つの一時テーブルを取り上げます。
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
「Dave」は #jobs テーブルに存在しないため、予想どおり NULL 値が与えられます。
私の同僚は、各 NULL 値が前のエントリと同じ値になるようにクエリを変更したいと考えています。
したがって、上記は次のようになります。
name value job
John 10 SQL Expert
Abid 20 Case Statement
Alyn 30 Driver
Dave 15 Driver
Dave が「ドライバー」になったことに注意してください
複数の 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」が最後の非 null エントリであるためです。