带有条件的SQL row_number()

时间:2015-04-06 23:33:42

标签: sql sql-server

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

enter image description here

如何添加C1-C2-C3-C4色谱柱?为此,每个柱子具有不同的条件。我使用的是row_number() order by id_pv desc,但它无法正常使用。

2 个答案:

答案 0 :(得分:4)

我认为您可以使用嵌套的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;

答案 1 :(得分:1)

假设你的例子中你希望它在你的条件不满足时放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