SELECT * FROM TabPrice
UNION 
SELECT   t1.id,t1.matnr,dateadd(day,number,t1.mdate) as mdate,t1.price
from master..spt_values with(nolock) 
INNER JOIN TabPrice t1 ON dateadd(day,number,t1.mdate)>=t1.mdate
INNER JOIN TabPrice t2 ON t1.id+1=t2.id
where type='P' and number>=0
and DATEDIFF(day,t1.mdate,t2.mdate)>number

解决方案 »

  1.   

            SELECT  b.ID,b.matnr,b.mdate,b.price
              FROM tabdate as a 
       OUTER APPLY (
                        SELECT TOP 1 *
                          FROM TabPrice
                         WHERE mdate <= a.mdate
                      ORDER BY mdate DESC
                   ) as b
      

  2.   

    完成这个功能,不一定要死磕在SQL语句上, 其他高级语言去哪儿了