我有下表:
id date cust
1 3/13/2019
1 3/14/2019 Johnson
1 3/19/2019
我想创建一个按ID捕获最后一个客户条目和分区的列。
我有以下内容。
select *
,case
when a.cust is not null then a.cust
else lag(a.cust) over partition by a.id order by a.date)
end lst_cust
from A
结果:
id date cust
1 3/13/2019
1 3/14/2019 Johnson
1 3/19/2019 Johnson
如何捕获第一行的“约翰逊”?
我也在考虑使用lead
,但不确定如何将它们嵌入到case表达式中,以及这是否是我要寻找的。或LAST_VALUE
首先为空,但看不到它能正常工作。
答案 0 :(得分:2)
<Pivot x:Name="XmlConfigPivot">
<PivotItem Header="Layout">
<Frame>
<xml_config:Layout_Tab/>
</Frame>
</PivotItem>
<PivotItem Header="stub_tab">
<Frame>
<xml_config:Stub_Tab/>
</Frame>
</PivotItem>
</Pivot>
是个好主意,只需添加window子句:
last_value
答案 1 :(得分:0)
我认为您同时需要lead()
和lag()
:
select a.*,
coalesce(a.cust,
lag(a.cust) over partition by a.id order by a.date),
lead(a.cust) over partition by a.id order by a.date)
) as lst_cust
from A;
如果您可以连续包含多个ignore nulls
,则可能还需要null
。