我有一个包含水果,日期,价格,旗帜的表格。
我用 First_value(价格)结束(按水果订单按水果分类,日期)以生成列价格优先
last_value(Price)结束(按水果订单按水果划分,无界限前后和无界追随之间的日期行)生成列价最后
Fruit Date Price Flag Price first Price Last
Apple 6/1/2015 1.4 Yes 1.4 1.9
Apple 6/2/2015 1.5 Yes 1.4 1.9
Apple 6/3/2015 2.5 Yes 1.4 1.9
Apple 6/4/2015 3 Yes 1.4 1.9
Apple 6/5/2015 1.7 Yes 1.4 1.9
Apple 6/6/2015 1.9 No 1.4 1.9
但我需要另一栏“价格最后标志是”给我最后更新的水果苹果价格没有标志号,在这种情况下,它应该是6/5/2015的价格
Fruit Date Price Flag Price first Price Last Price Last Flag Yes
Apple 6/1/2015 1.4 Yes 1.4 1.9 1.7
Apple 6/2/2015 1.5 Yes 1.4 1.9 1.7
Apple 6/3/2015 2.5 Yes 1.4 1.9 1.7
Apple 6/4/2015 3 Yes 1.4 1.9 1.7
Apple 6/5/2015 1.7 Yes 1.4 1.9 1.7
Apple 6/6/2015 1.9 No 1.4 1.9 1.7
我不知道如何查询在函数中过滤掉标记“no”的条件。我不想通过子查询。可以在函数中添加条件和过滤器吗?谢谢
我不想使用where子句,因为那时我需要使用子查询。我也尝试过last_value(当Flag ='是'然后是价格结束时的情况)(按水果订单按水果,日期划分),它也不起作用。由于某种原因,它会混淆数据,而某些行则为空。
答案 0 :(得分:1)
有IGNORE NULLS
选项:
last_value(case when Flag = 'Yes' then Price end ignore nulls)
over (partition by Fruit order by Date ...
顺便说一下,partition by Fruit, Date order by Fruit,Date
无法使用,而partition by Fruit order by Date
代替