hive sql排序查询比较最后一个值

时间:2018-04-03 17:17:22

标签: sql hive

我的记录已按查询中的ID和数字排序。我必须构建一个逻辑,它检查它上面的行,如果它符合某个条件,它将被赋予与另一列相同的值。逻辑如下

if [row-1:id] != [id] and is null ([first_time])
then [my_date]
else [first_time]
endif

在我的查询中我有

select
 case when
   lag(my_date) over (partition by id  order by id ASC, first_time ASC) and  
   first_time is Null then my_date
   else first_time
   end
   from
   mytable 

我上面写的查询将无法编译。这是处理上面列出的表达式的正确查询逻辑吗?

1 个答案:

答案 0 :(得分:0)

您有lag(),但没有比较。你似乎想要这样的东西:

select (case when first_time is null
                  lag(id, 1, -1) over (order by ?) <> id
             then my_date else first_time
        end)
from my_table;

?用于指定表格中排序的列 - “上面一行”的定义