使用上面行值的值自动填充字段

时间:2015-12-08 14:07:30

标签: sql sql-server tsql row

我想用上面的值自动填充空值。

查询

SELECT 
      Nr,
      [Name]
FROM #TEMP

enter image description here

我希望我的输出看起来像这样

enter image description here

感谢。

2 个答案:

答案 0 :(得分:2)

实现这一目标的一种方法是使用子查询:

SELECT t1.Nr, Name = (SELECT TOP 1 Name 
                      FROM #temp t2 
                      WHERE Name IS NOT NULL 
                        AND t1.Nr >= t2.Nr
                      ORDER BY Nr DESC)
FROM #temp t1
ORDER BY Nr;

LiveDemo

CROSS APPLY

SELECT t1.Nr, sub.Name
FROM #temp t1
CROSS APPLY (SELECT TOP 1 Name 
             FROM #temp t2 
             WHERE Name IS NOT NULL 
               AND t1.Nr >= t2.Nr
             ORDER BY Nr DESC) AS sub
ORDER BY Nr;

LiveDemo2

答案 1 :(得分:1)

普遍的共识似乎是,这不是数据库要做或应该做的事情(如果可以避免的话)。 See here

话虽这么说,this SO question似乎试图做与你相同的事情并且有一些有效的解决方案。