我在SQL Server表的以下信息:SQL ROW_NUMBER()与条件
如何添加C1-C2-C3-C4列?为此,每个柱子都有不同的条件。我正在使用row_number() order by id_pv desc
,但它不起作用。
我在SQL Server表的以下信息:SQL ROW_NUMBER()与条件
如何添加C1-C2-C3-C4列?为此,每个柱子都有不同的条件。我正在使用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;
完美!我分享了我在c3中所做的事情:'(当expiry_date> = @somedate和t.cod_grupo = 4且row_number()覆盖时(由t.cod_suc,t.cod_ramo,t.nro_pol, 和\t分区时,情况为 \t \t \t(情况 \t \t \t \t当EXPIRY_DATE> = @somedate和t.cod_grupo = 4,则1 \t \t \t \t别的0 \t \t \t端)通过t.id_pv降序 \t \t \t顺序)= 1,则1 else 0 end),' –
从你的例子假设你想让它放在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
我只需要'row_number()'计数取决于列。所以,如果我加上'分区by','ROW_NUMBER()'不工作 –
我想为C3这个代码'(案例 \t当t.fec_vig_hasta> = @varFechaHasta和t.cod_grupo_endo = 4,则 \t \t情况下 \t \t \t时ROW_NUMBER()以上(由t.cod_suc,t.cod_ramo_comercial,通过t.id_pv t.nro_pol顺序分区)= 1,则1 \t \t \t别的0 \t \t端 \t别的0 端)as'C3'' –
Ohh,你只是想插入1当一行是最高结果和0除此以外?将分区上的最大值再比较,你可能会有更好的运气。当数字=最大(数字)结束时(分区由...),然后1其他0结束 – APH
使用'CASE'语句 – sqluser