日期:2014-05-17  浏览次数:20559 次

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.日期