IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Question sur TOP ou autre commande


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 56
    Points : 37
    Points
    37
    Par défaut Question sur TOP ou autre commande
    Bonjour à tous,

    Je suis sous SQL 2005

    J'ai une table avec un numéro de palette,sa référence, son emplacement, date FIFO

    Je voudrais sortir par la liste des trois plus vieilles palettes de CHAQUE référence.

    Select TOP ... me sort les trois plus vieilles pour l'ensemble de la table.

    Je ne vois pas comment faire ?

    Si Elsuket passe par ici


    Merci d'avance à tous

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 174
    Points : 7 424
    Points
    7 424
    Billets dans le blog
    1
    Par défaut
    Fonctions analytiques :
    http://lalystar.developpez.com/fonctionsAnalytiques/

    Il faut mixer les infos de l'article avec celles de la MSDN, l'article ayant été fait pour Oracle, certaines choses ne marchent pas du premier coup. Mais ça répondra à ton problème.

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Citation Envoyé par boutinj
    Si Elsuket passe par ici
    Bah y'a pas que moi sur le forum quand même

    Je considère la table suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE palette
    (
    	numero_palette int NOT NULL CONSTRAINT PKpalette PRIMARY KEY
    	, reference_palette char(6) NOT NULL
    	, numero_emplacement int NOT NULL CONSTRAINT FKpalette FOREIGN KEY (numero_emplacement) REFERENCES dbo.emplacement
    	, time_stamp datetime NOT NULL
    )
    La requête est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ;WITH
    	CTE AS
    	(
    		SELECT	reference_palette
    			, numero_palette
    			, time_stamp
    			, ROW_NUMBER() OVER(PARTITION BY reference_palette ORDER time_stamp) AS n
    		FROM	dbo.palette
    	)
    SELECT	reference_palette
    	, numero_palette
    	, time_stamp
    FROM	CTE
    WHERE	n <= 3
    @++

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 56
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup à vous deux.

    La solution de Elsuket est impeccable, je pensais pas que je pouvais faire une CTE sans UNION pour le point d'ancrage).

    Du coup j'ai plein de nouvelles idées.

    Merci encore.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    La solution de Elsuket est impeccable, je pensais pas que je pouvais faire une CTE sans UNION pour le point d'ancrage).
    Vous avez écrit une CTE récursive ?

    @++

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    La solution de Elsuket est impeccable, je pensais pas que je pouvais faire une CTE sans UNION pour le point d'ancrage).
    Manifestement on a affaire à un vrai fan là!
    Avec lettre anonyme et tout et tout :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur les vspace + problème commande
    Par Fox213 dans le forum Mise en forme
    Réponses: 6
    Dernier message: 08/10/2008, 22h06
  2. Questions sur la commande awk
    Par vbcasimir dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 17/01/2006, 11h35
  3. Question sur la stringgrid et autres problemes .
    Par jamah dans le forum Composants VCL
    Réponses: 1
    Dernier message: 01/12/2005, 18h58
  4. Réponses: 2
    Dernier message: 11/08/2002, 22h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo