我的记录已按查询中的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
我上面写的查询将无法编译。这是处理上面列出的表达式的正确查询逻辑吗?
答案 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;
?
用于指定表格中排序的列 - “上面一行”的定义