簡體   English   中英

滯后功能-為最后一個值創建虛擬行?

[英]Lag Function - Create Dummy Row for Last Value?

我無法分享代碼或細節,因此希望這個通用問題/示例有意義。

下一個到期日期字段是系統中的一個物理字段。 但是,截止日期字段不是。 對於到期日,我使用SQL Server 2012中的LAG函數從上一行“復制”下一個到期日。 它工作正常,但是我想知道是否可以創建一個虛擬行來捕獲最后一行的下一個到期日嗎?

在下面的示例中,您將看到第1、2和3行正常工作,因為該表包含實際數據,即TestID。

我的問題是:有沒有要制造的行(在此示例中為第4行),因此即使當前沒有數據(TestID),我也可以捕獲到下一個到期日2/25/2020(以及紐約的位置)。在表中存在嗎?

Row   TestID    Test Location     Due Date       Next Due Date
1     123       New York          02/05/2018*    10/13/2018
2     456       New York          10/13/2018     06/20/2019
3     789       New York          06/20/2019     02/25/2020
-------------------------------------------------------------------
4     n/a       New York          02/25/2020     n/a

*calculated

我看不到lag()與這個有什么關系。 您似乎想要:

select TestID, TestLocation, DueDate, NextDueDate
from t
union all
select null, TestLocation, max(nextDueDate) as dueDate, null as NextDueDate
from t
group by TestLocation;

請注意,我將多余的值保留為NULL ,因此您不必處理混合的字符串和非字符串類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM