簡體   English   中英

sql 對 2 列值求和並按 3 列對記錄進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM