[英]sql sum 2 column values and sort records by 3 columns
我有列 - ip、端口、對、pair_status、長度、length_to_fault、add_date。 我需要按端口對所有內容進行排序,每個端口至少有一對(A,B,C,D)。 排序后,我需要進行更多排序 - 我需要在確切的端口對每一對進行排序。
目前我有 select 可以做我需要的一切,但只是長度。
我想更改這個片段,以便它可以檢查 - 如果長度 = N/A,那么它需要 length_to_fault,如果 length_to_fault = N/A,那么它需要長度。 我的想法是將這 2 列合並為 1。此外,每條記錄僅在一列上具有值(它可以是長度或 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 之內,所以這個 select 不會記錄該記錄。 有沒有辦法編輯這個片段以包含 length_to_fault 呢? 也許我可以將這兩列合二為一? 此外,length/length_to_fault 是數據庫中的字符,因此我必須將其更改為在此 select 中浮動。
您可以使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.