Je veux créer une procédure stockée qui prend des valeurs entières en tant que @top
de moi afin que je puisse l'utiliser dans ma requête, mais cela ne me permet pas de définir dynamicment la valeur du haut.
select top @top * from (select url, count(1) as shared from tblshared group by url, uniqid having uniqid = @uniqid) as sha order by shared desc
Je veux récupérer les n
premiers loggings de la table, donc je veux passer la valeur de n
dans la procédure stockée et cela me renverra ce nombre d'loggings supérieurs.
Note: Je ne veux pas utiliser exec
.
Merci.
Vous pouvez utiliser SET ROWCOUNT :
SET ROWCOUNT @top SELECT ... SET ROWCOUNT 0
Cela fonctionnera bien si vous enveloppez @top entre parenthèses
select top (@top) * from ( select url, count(1) as shared from tblshared group by url, uniqid having uniqid=@uniqid) as sha order by shared desc
Vous pouvez utiliser ROW_NUMBER()
isntead of top
with t1 as( select url,row_number() over( partition by url, uniqid order by url, uniqid desc) as shared from tblshared where uniqid = @uniqid ) select * from t1 where shared < @top
REF
declare @v1 int set @v1 = 25 set rowcount @v1 select * from MyTable Order by DateColumn set rowcount 0