J'ai une requête qui me permet d'obtenir des enregistrements d'une table de base de données en lui donnant une limite minimale et maximale.
Il va comme ceci: P>
SELECT T1.CDUSUARIO, T1.DSALIAS, T1.DSNOMBRE_EMPRESA, T1.DSCARGO, T1.DSDIRECCION_CORREO, T1.CDUSUARIO_ADMINISTRADOR, T1.FEMODIFICACION FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY CDUSUARIO) as row FROM TBL_USUARIOS ) as T1 WHERE row > @limiteInf and row <= @limiteSup ORDER BY DSALIAS ASC;
4 Réponses :
Utilisez une autre fonction ou mettez à niveau votre base de données. Row_Number n'existait pas dans la version 2000 de la base de données. Point. Rien que vous puissiez faire à ce sujet. P>
Cela ne semble pas très utile. Il sait évidemment que ce n'est pas en 2000, le message d'erreur lui dit cela.
@nathan Gonzalez: C'est vraiment la vérité de base: il n'y a pas de substitut élégant
Exactement. Downvoting Becasue Vous n'aimez pas que la vérité ne soit pas utile non plus, vous savez. c'est la vérité. La fonction a été introduite plus tard 2000 car elle manquait. Il n'y a pas de même substitut de performance.
aucune solution ne supporte la partition par p>
Je n'ai pas mentionné des solutions à base de boucle ou de curseur qui sont probablement pires p>
EDIT 20 MAI 20011 P>
Exemple de démonstration de la raison pour laquelle l'identité ne fonctionnera pas: Les enregistrements insérés reçoivent toujours des valeurs d'identité contiguës p>
+1: le comte / la join Self est également plus comme en utilisant le rang / dense_rank, car les doublons auront la même valeur
"Aucune solution ne supporte la partition par". Vous pouvez regrouper lors du chargement à la table TEMP. Ajoutez ensuite l'identité pour obtenir une pièce d'identité pour chaque groupe. Vous pouvez ensuite rejoindre cette table TEMP à votre requête d'origine.
Je sais que ce fil est peu vieux, mais pour quelqu'un d'autre à la recherche de même solution, je pense qu'il sera utile de savoir qu'il existe une bonne solution à ce problème.
Veuillez voir le lien d'origine ici P>
Pour ceux qui ne veulent pas cliquer sur le lien, j'ai copié et collé le code ci-dessous. Encore une fois, le crédit va à Editeur d'origine P>
ici est Le SQL ci-dessous pour SQL Server 2000 pour sélectionner la dernière version d'un groupe d'enregistrements par une seule colonne. P>
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY PartitionByColumn ORDER BY OrderByColumn DESC) AS rowNumber FROM MyTable) AS rw1 WHERE rw1.rowNumber = 1
Ceci est ma solution au problème: explication: p> Vous pouvez demander, pourquoi n'a-t-je pas utiliser la variable dans la déclaration SELECT? Ce serait plus simple mais cela n'est pas autorisé, seulement s'il n'y a pas de résultat. Il est correct de le faire dans une mise à jour. P> p>
S'il vous plaît expliquer ce que vous faites là-bas