J'ai la procédure stockée suivante qui renvoie A
, B
et le compte dans l'ordre décroissant. J'essaie d'utiliser ROW_NUMBER
, donc je peux paginer les enregistrements, mais je veux que le numéro de la première ligne 1
soit le record avec le plus grand nombre, donc fondamentalement, si je retourne une table avec 3 enregistrements et le nombre est 30
, 20
, 10
, puis numéro de ligne 1
doit correspondre au nombre 30
, le numéro de ligne 2
doit correspondre au nombre 20
et le numéro de ligne 3
doit correspondre au nombre 10
. dbo.f_GetCount
est une fonction qui renvoie un nombre.Comment utiliser ROW_NUMBER dans la procédure suivante?
create procedure dbo.Test
as
@A nvarchar(300) = NULL,
@B nvarchar(10) = NULL
as
select @A = nullif(@A,'')
,@B = nullif(@B,'');
select h.A
,hrl.B
,dbo.f_GetCount(hrl.A,h.B) as cnt
from dbo.hrl
inner join dbo.h
on h.C = hrl.C
where(@A is null
or h.A like '%'[email protected]+'%'
)
and (@B is null
or hrl.B = @B
)
group by hrl.B
,h.A
order by cnt desc;
Ajoutez un point-virgule après @B = NULLIF (@B, '') si vous souhaitez utiliser une clause WITH dans votre instruction. – Quassnoi