簡體   English   中英

帶條件的SQL row_number()

[英]SQL row_number() with conditions

我在SQL Server表中具有以下信息:

在此處輸入圖片說明

如何添加C1-C2-C3-C4列? 為此,每個列都有不同的條件。 我正在row_number() order by id_pv desc使用row_number() order by id_pv desc ,但是它不起作用。

我認為您可以使用嵌套的case語句來做到這一點-既可以在partition by子句中,也可以在row_number() 對於第一列:

select t.*,
       (case when expiry_date > @somdate and
                  row_number() over (partition by cod_suc, cod_ramo,
                                                  (case when expiry_date > @somdate then 1 else 0 end)
                                     order by id_pv desc) as col1
              then 1 else 0
         end)
from table t;

從您的示例假設,您希望在不滿足條件時將其置於0,否則將其置於行號,請嘗試:

Select [your columns]
, case when ExpiryDate >= @someDate then row_number() 
    over (order by [list of columns]) 
    else 0 end as c1
, case when ExpiryDate >= @someDate and Cod_grupo = 4 then row_number() 
    over (order by [other list of columns]) 
    else 0 end as c2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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