使用高于行值的值自动填充字段
Auto fill field with value from above row value
我想用上面的值自动填充空值。
查询
SELECT
Nr,
[Name]
FROM #TEMP
Table:
我希望我的输出看起来像这样:
谢谢。
普遍的共识似乎是,这不是数据库打算做的事情,也不应该做(如果可以避免的话)。 See here。
话虽这么说,this SO question 似乎正在尝试做与您相同的事情,并且有一些有效的解决方案。
实现这一目标的一种方法是使用子查询:
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;
或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;
我想用上面的值自动填充空值。
查询
SELECT
Nr,
[Name]
FROM #TEMP
Table:
我希望我的输出看起来像这样:
谢谢。
普遍的共识似乎是,这不是数据库打算做的事情,也不应该做(如果可以避免的话)。 See here。
话虽这么说,this SO question 似乎正在尝试做与您相同的事情,并且有一些有效的解决方案。
实现这一目标的一种方法是使用子查询:
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;
或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;