我在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