我有一个很大的查询,结果是下表(摘要):
Rank | LockID | LockNumber | FirstInvoiceDate
1 | 1 | 800 | 2014-10-10
2 | 1 | 800 | NULL
3 | 2 | 800 | NULL
1 | 3 | 900 | 2015-12-10
2 | 4 | 900 | NULL我想做最后一篇专栏文章如下:
| FirstInvoiceDate
| 2014-10-10
| 2014-10-10
| 2014-10-10
| 2015-12-10
| 2015-12-10 也就是说,相同数目的锁需要有相同的FirstInvoiceDate
任何帮助都是非常感谢的!
发布于 2014-07-12 12:53:25
您可以通过更新来完成这一任务。SQL Server具有可更新的CTE的优点,因此您可以这样做:
with toupdate as (
select t.*, min(FirstInvoiceDate) over (partition by LockNumber) as new_FID
from table
)
update toupdate
set FirstInvoiceDate = new_FID;如果不需要更新,而只需要select中的值,那么可以在toupdate中使用表达式。
发布于 2014-07-12 13:08:30
在检查值是否为NULL之后,您可以尝试一个名为延迟的函数来获取上一行的值。
SELECT ISNULL (LAG(T.FirstInvoiceDate) OVER (ORDER BY p.LockID) ) from yourTable T欲知更多详情,请参阅
http://blog.sqlauthority.com/2013/09/22/sql-server-how-to-access-the-previous-row-and-next-row-value-in-select-statement/
https://stackoverflow.com/questions/24713058
复制相似问题