I have input data set as below. I am trying to populate null values with last available value.
INPUT DATA SET :
EXPECTED DATA SET :
QUERY I TRIED :
SELECT *
,ISNULL(YEAR, (
SELECT TOP 1 YEAR FROM SEQ_SET
WHERE GROUPSEQ <= T.GROUPSEQ
AND YEAR IS NOT NULL
ORDER BY GROUPSEQ DESC)) AS YEAR_APPLY
,ISNULL(QUARTER, (
SELECT TOP 1 QUARTER FROM SEQ_SET
WHERE GROUPSEQ <= T.GROUPSEQ
AND QUARTER IS NOT NULL
ORDER BY GROUPSEQ DESC)) AS QUARTER_APPLY
FROM SEQ_SET T
ORDER BY COMPANY, YEAR, QUARTER
Whats going wrong :
All values are coming as expected except the one in groupseq 6. ( the value highlighted in yellow ). It should be Q1 instead of Q2.
i.e. when there are more than two nulls the logic does not work
any idea whats missing in my query.
Reference post :