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

SQL SEVRER如何给空值填上跟上一行一样的值
订单   订单明细   数量
 201101  20110101    1
         20110102    2
 201102  20110201    1
         20110202    3
类似这样的订单这一列有的值为空,但是计算的时候需要按上面的值,需要订单都填上
各位大虾门都来看看哈!
 
 
------解决方案--------------------
with TB as(select *,row_number() over(order by getdate()) as rowid from Tablename
select isnull(订单,(select top 1 订单 from TB where not 订单 is null and rowid<a.rowid order by rowid desc )) as 订单,订单明细,数量
from TB as a
------解决方案--------------------
--CREATE TABLE huang(订单  INT, 订单明细  int, 数量 int )
 --INSERT INTO huang
 --SELECT  201101,  20110101  ,  1
 --UNION ALL 
 --SELECT NULL ,20110102,    2
 --UNION ALL 
 --SELECT 201102,  20110201 ,   1
 --UNION ALL 
 --SELECT  NULL ,20110202 ,   3
 
 WITH    cte
           AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY GETDATE() ) id ,
                         *
                FROM     Huang
              ),
         cte1
           AS ( SELECT   *
                FROM     cte
                WHERE    id = 1
                UNION ALL
                SELECT   b.id ,
                         CASE WHEN b.订单 IS NULL THEN a.订单
                              ELSE b.订单
                         END 订单 ,
                         b.订单明细 ,
                         b.数量
                FROM &n