J'utilise une expression de table commune pour la pagination:Comment puis-je réutiliser une expression de table commune
with query as (
Select Row_Number() over (Order By OrderNum ASC) as TableRowNum,
FirstName,
LastName
From Users
)
Select * from query where TableRowNum between 1 and 25 Order By TableRowNum ASC
Immédiatement après avoir fait cette requête, je fais faire une requête presque identique afin de récupérer le nombre total d'éléments :
with query as (
Select Row_Number() over (Order By OrderNum ASC) as TableRowNum,
FirstName,
LastName
From Users
)
Select Count(*) from query
J'ai essayé la combinaison de ces ensemble (à savoir: définir le CTE, interroger les données, puis interroger le comte, mais quand je le fais, je reçois un message d'erreur « nom d'objet incorrect" requête » dans réponse la deuxième requête (le nombre)
Est-il possible de combiner ces deux requêtes en une seule, pour enregistrer un aller-retour dans la base de données?
Quel est le point d'utiliser un CTE ici? –
@ Scott Rippey, je trouve que les CTE peuvent lire, réutiliser et maintenir. –
Oh merci. Dans votre premier bloc de code, vous utilisez un CTE pour obtenir le total et obtenir les résultats, ce qui est parfaitement logique. Mais j'obtiens une erreur lorsque j'essaie d'interroger un CTE deux fois. Pouvez-vous expliquer pourquoi cela fonctionne? –