我有列-ip,端口,线对,pair_status,长度,length_to_fault,add_date。 我需要按端口对所有内容进行排序,并且每个端口至少有一对(A,B,C,D)。当它排序时,我需要排序甚至更多-我需要在确切的端口中对每对进行排序。
目前,我可以选择要执行的所有操作,但只需要一定的长度。
我想更改此片段,以便可以检查-如果length = N / A,则需要length_to_fault,如果length_to_fault = N / A,则需要长度。我的想法只是将这两列合并为1。每条记录仅在一个列上具有值(可以是length或length_to_fault)。到目前为止,我有这个
Select d.*
from (select d.*, lead(length::float) over (partition by port_nbr, pair order by d.add_date) as next_length
from diags d
where length !='N/A'
) d
这很好用,但是有些记录的长度为N / A,但是值在length_to_fault内,因此该选择不接收该记录。有没有办法编辑此片段以包括length_to_fault?也许我可以将这两列汇总为一?而且length / length_to_fault是数据库中的字符,因此在此选择中我必须将其更改为float。
答案 0 :(得分:0)
您可以使用case
表达式:
Select d.*
from (select d.*,
lead( (case when length <> 'N/A' then length else length_to_fault end)::float) over (partition by port_nbr, pair order by d.add_date) as next_length
from diags d
) d