SQL 各路大神求解
有一组数据:
日期 代码 数量
6.7 A 12
6.8 A 21
6.9 NULL NULL
6.10 NULL NULL
6.11 B 34
6.12 NULL NULL
6.13 C 45
6.14 NULL NULL
当代码和数量出现null值的时候,就用这天之前最近的非null的值的代码和数量代替,怎么写
结果为
日期 代码 数量
6.7 A 12
6.8 A 21
6.9 A 21
6.10 A 21
6.11 B 34
6.12 B 34
6.13 C 45
6.14 C 45
------解决方案--------------------
SQL code
select a.日期,isnull(a.代码,b.代码) as 代码,isnull(a.数量,b.数量) as 数量
from tab a
left join tab b
on b.日期 = (select max(日期) from tab where 日期<a.日期 and 代码 is not null and 数量 is not null
)
order by a.日期