Comment retourner en Transact-SQL le ni=E8me enregistrement=20
d'une requ=EAte (pour corser le tout, la table cible=20
comporte une cl=E9 primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Walsh
Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans une table intermédiare, et d'en sortir l'enregistrement de rang = n. Si la table n'est pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon. Par opposition à la première solution, n peut être un paramètre. Si champ peut avoir de doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in message news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
Salut,
Une solution est dans le genre:
SELECT TOP 1
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY champ ASC) As a
ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans une table
intermédiare, et d'en sortir l'enregistrement de rang = n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.champ <= b.champ
GROUP BY a.f1, a.f2, a.f3
HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon. Par opposition à la
première solution, n peut être un paramètre. Si champ peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ
OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ
OR ( a.champ=b.champ AND (a.pk < b.pk
OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile,
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in message
news:a12901c3eb42$5d363b70$a501280a@phx.gbl...
Comment retourner en Transact-SQL le nième enregistrement
d'une requête (pour corser le tout, la table cible
comporte une clé primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans une table intermédiare, et d'en sortir l'enregistrement de rang = n. Si la table n'est pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon. Par opposition à la première solution, n peut être un paramètre. Si champ peut avoir de doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in message news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
jpl
Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
.
Merci pour la réponse, mais elle ne correspond pas à ma
recherche : le problème est que ma table possède une clé
primaire composée de deux champs dans lesquels on trouve
des doublons, mais dont l'intersection est unique.
-----Message d'origine-----
Salut,
Une solution est dans le genre:
SELECT TOP 1
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY champ ASC) As a
ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.champ <= b.champ
GROUP BY a.f1, a.f2, a.f3
HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ
OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ
OR ( a.champ=b.champ AND (a.pk < b.pk
OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile,
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in
message
news:a12901c3eb42$5d363b70$a501280a@phx.gbl...
Comment retourner en Transact-SQL le nième enregistrement
d'une requête (pour corser le tout, la table cible
comporte une clé primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
.
Michel Walsh
Salut,
et l'ordonnancement est selon cette clé composée?
SELECT TOP 1 * FROM (SELECT TOP n * FROM quelquePart ORDER BY pk1 ASC, pk2 ASC) As a ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND a.pk2<=b.pk2) GROUP BY a.pk1, a.pk2, a.f3 HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" wrote in message news:a3f901c3eb67$a12fd050$ Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang n. Si la table n'est pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
.
Salut,
et l'ordonnancement est selon cette clé composée?
SELECT TOP 1 *
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY pk1 ASC, pk2 ASC) As a
ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND a.pk2<=b.pk2)
GROUP BY a.pk1, a.pk2, a.f3
HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in message
news:a3f901c3eb67$a12fd050$a501280a@phx.gbl...
Merci pour la réponse, mais elle ne correspond pas à ma
recherche : le problème est que ma table possède une clé
primaire composée de deux champs dans lesquels on trouve
des doublons, mais dont l'intersection est unique.
-----Message d'origine-----
Salut,
Une solution est dans le genre:
SELECT TOP 1
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY champ ASC) As a
ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.champ <= b.champ
GROUP BY a.f1, a.f2, a.f3
HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ
OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ
OR ( a.champ=b.champ AND (a.pk < b.pk
OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile,
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in
message
news:a12901c3eb42$5d363b70$a501280a@phx.gbl...
Comment retourner en Transact-SQL le nième enregistrement
d'une requête (pour corser le tout, la table cible
comporte une clé primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
SELECT TOP 1 * FROM (SELECT TOP n * FROM quelquePart ORDER BY pk1 ASC, pk2 ASC) As a ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND a.pk2<=b.pk2) GROUP BY a.pk1, a.pk2, a.f3 HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" wrote in message news:a3f901c3eb67$a12fd050$ Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang n. Si la table n'est pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
.
Med Bouchenafa[MVP]
Voici un exemple sur la base pubs SELECT * FROM ( SELECT rang=count(*), A.au_fname FROM authors A INNER JOIN authors B ON A.au_fname >= B.au_fname GROUP BY.au_fname )t WHERE t.rang =3
Voir aussi l'article suivant http://support.microsoft.com/?id6133
-- Bien cordialement Med Bouchenafa TETRASET 75015 Paris
"jpl" wrote in message news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
Voici un exemple sur la base pubs
SELECT * FROM
(
SELECT rang=count(*), A.au_fname
FROM authors A INNER JOIN authors B ON A.au_fname >= B.au_fname
GROUP BY.au_fname
)t
WHERE t.rang =3
Voir aussi l'article suivant
http://support.microsoft.com/?id6133
--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"jpl" <anonymous@discussions.microsoft.com> wrote in message
news:a12901c3eb42$5d363b70$a501280a@phx.gbl...
Comment retourner en Transact-SQL le nième enregistrement
d'une requête (pour corser le tout, la table cible
comporte une clé primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
Voici un exemple sur la base pubs SELECT * FROM ( SELECT rang=count(*), A.au_fname FROM authors A INNER JOIN authors B ON A.au_fname >= B.au_fname GROUP BY.au_fname )t WHERE t.rang =3
Voir aussi l'article suivant http://support.microsoft.com/?id6133
-- Bien cordialement Med Bouchenafa TETRASET 75015 Paris
"jpl" wrote in message news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
jpl
Merci pour la piste de travail ! En reprenant l'idée et aussi en reconstruisant une clé primaire unique par concaténation de mes deux clés primaires, je suis arrivé à mon objectif.
-----Message d'origine----- Salut,
et l'ordonnancement est selon cette clé composée?
SELECT TOP 1 * FROM (SELECT TOP n * FROM quelquePart ORDER BY pk1 ASC, pk2 ASC) As a ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND
a.pk2<=b.pk2)
GROUP BY a.pk1, a.pk2, a.f3 HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" wrote in
message
news:a3f901c3eb67$a12fd050$ Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre
.
.
Merci pour la piste de travail ! En reprenant l'idée et
aussi en reconstruisant une clé primaire unique par
concaténation de mes deux clés primaires, je suis arrivé à
mon objectif.
-----Message d'origine-----
Salut,
et l'ordonnancement est selon cette clé composée?
SELECT TOP 1 *
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY pk1 ASC, pk2 ASC) As a
ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND
a.pk2<=b.pk2)
GROUP BY a.pk1, a.pk2, a.f3
HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in
message
news:a3f901c3eb67$a12fd050$a501280a@phx.gbl...
Merci pour la réponse, mais elle ne correspond pas à ma
recherche : le problème est que ma table possède une clé
primaire composée de deux champs dans lesquels on trouve
des doublons, mais dont l'intersection est unique.
-----Message d'origine-----
Salut,
Une solution est dans le genre:
SELECT TOP 1
FROM (SELECT TOP n *
FROM quelquePart
ORDER BY champ ASC) As a
ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3
FROM maTable As a INNER JOIN maTable as b
ON a.champ <= b.champ
GROUP BY a.f1, a.f2, a.f3
HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ
OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ
OR ( a.champ=b.champ AND (a.pk < b.pk
OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile,
Vanderghast, Access MVP
"jpl" <anonymous@discussions.microsoft.com> wrote in
message
news:a12901c3eb42$5d363b70$a501280a@phx.gbl...
Comment retourner en Transact-SQL le nième enregistrement
d'une requête (pour corser le tout, la table cible
comporte une clé primaire multiple) ?
Merci d'avance pour toute piste de recherche
Jean-Pierre
Merci pour la piste de travail ! En reprenant l'idée et aussi en reconstruisant une clé primaire unique par concaténation de mes deux clés primaires, je suis arrivé à mon objectif.
-----Message d'origine----- Salut,
et l'ordonnancement est selon cette clé composée?
SELECT TOP 1 * FROM (SELECT TOP n * FROM quelquePart ORDER BY pk1 ASC, pk2 ASC) As a ORDER BY pk1 DESC, pk2 DESC
et
SELECT a.pk1, a.pk2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.pk1< b.pk1 OR ( a.pk1=b.pk1 AND
a.pk2<=b.pk2)
GROUP BY a.pk1, a.pk2, a.f3 HAVING COUNT(*) = n
Vanderghast, Access MVP
"jpl" wrote in
message
news:a3f901c3eb67$a12fd050$ Merci pour la réponse, mais elle ne correspond pas à ma recherche : le problème est que ma table possède une clé primaire composée de deux champs dans lesquels on trouve des doublons, mais dont l'intersection est unique.
-----Message d'origine----- Salut,
Une solution est dans le genre:
SELECT TOP 1 FROM (SELECT TOP n * FROM quelquePart ORDER BY champ ASC) As a ORDER BY champ DESC
Une autre méthode est de calculer le rang, dans
une table
intermédiare, et d'en sortir l'enregistrement de rang =
n. Si la table n'est
pas trop grande:
SELECT a.f1, a.f2, a.f3 FROM maTable As a INNER JOIN maTable as b ON a.champ <= b.champ GROUP BY a.f1, a.f2, a.f3 HAVING COUNT(*) = n
où je présuppose que le champ champ n'a pas de doublon.
Par opposition à la
première solution, n peut être un paramètre. Si champ
peut avoir de
doublons, faire quelque chose du genre:
ON a.champ < b.champ OR ( a.champ=b.champ AND a.pk <= b.pk)
et de même si pk peut avoir un doublon:
ON a.champ < b.champ OR ( a.champ=b.champ AND (a.pk < b.pk OR (a.pk=b.pk AND a.pk2 <= b.pk2)))
et ainsi de suite.
Espérant être utile, Vanderghast, Access MVP
"jpl" wrote in
message
news:a12901c3eb42$5d363b70$ Comment retourner en Transact-SQL le nième enregistrement d'une requête (pour corser le tout, la table cible comporte une clé primaire multiple) ? Merci d'avance pour toute piste de recherche Jean-Pierre