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 :

Requete SQL MAX date CASE WHEN [2017]


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut Requete SQL MAX date CASE WHEN
    Bonjour,

    J’ai une table Patient dans laquelle j’aimerai sélectionner uniquement la ligne ayant une datefin à NULL sinon la datefin la plus récente.
    Patient(id_dossier, id_patient, datedebut, datefin)

    Sachant que id_patient peut s’afficher plusieurs fois dans la table si il y a eu plusieurs séjour, moi j'aimerai un unique id_patient.

    Mais j’y parviens pas, quelqu’un pourrait m’aider svp ?
    Merci pour vos retour.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    bonjour,

    un truc dans ce style (pas testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH CTE AS (
        P.*
        ,ROW_NUMBER() OVER(PARTITION BY id_patient ORDER BY CASE WHEN datefin IS NULL THEN 0 ELSE 1 END, datefin DESC) AS Rn
    )
    SELECT id_patient, datefin
    FROM CTE
    WHERE RN = 1

  3. #3
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour ta réponse mais ça ne fonctionne pas.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Citation Envoyé par tatialie Voir le message
    ça ne fonctionne pas.
    C'est un peu court comme description du résultat
    Tu obtiens un message d'erreur ? Lequel ?
    Le résultat ne correspond pas à ce que tu attendais ? Donne un exemple avec le résultat attendu, le résultat obtenu et les données qui entrent en jeu.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    C'est vrai qu'avec un exemple ça sera plus simple à comprendre.

    J'aimerai sélectionner dans la table PATIENT, le patient ayant une date_fin à NULL, sinon la date_fin la plus récente:

    Nom : table patient.JPG
Affichages : 378
Taille : 65,3 Ko

    Voici le résultat que je souhaite avoir:

    Nom : table patient résultat.JPG
Affichages : 352
Taille : 36,3 Ko

    Je sais qu'il faudrait utiliser un CASE et max, mais je n'y parviens pas.

    Merci pour votre aide.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    C'est bien ce qu'est censé faire la requête que j'ai postée.
    Qu'est-ce qui ne va pas ?

  7. #7
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    bonjour,

    un truc dans ce style (pas testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH CTE AS (
        P.*
        ,ROW_NUMBER() OVER(PARTITION BY id_patient ORDER BY CASE WHEN datefin IS NULL THEN 0 ELSE 1 END, datefin DESC) AS Rn
    )
    SELECT id_patient, datefin
    FROM CTE
    WHERE RN = 1
    Je pense qu'il manque un bout dans la CTE.
    Est-ce que ceci ne serait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    WITH CTE AS (
    SELECT 
        P.*
        ,ROW_NUMBER() OVER(PARTITION BY id_patient ORDER BY CASE WHEN datefin IS NULL THEN 0 ELSE 1 END, datefin DESC) AS Rn
    FROM PATIENT as P
    )
    SELECT id_patient, datefin
    FROM CTE
    WHERE RN = 1

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par TheRussian Voir le message
    Je pense qu'il manque un bout dans la CTE.

    Bien vu

    Citation Envoyé par TheRussian Voir le message
    Est-ce que ceci ne serait pas mieux ?
    De toute évidence

    Merci

  9. #9
    Membre à l'essai
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Par défaut
    Merci à vous deux!
    Cette requête fonctionne, j’obtiens le résultat que j'attendais

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

Discussions similaires

  1. requete sql max de sum/sum en gardant les autres infos
    Par gwena54 dans le forum Requêtes
    Réponses: 17
    Dernier message: 27/06/2007, 13h13
  2. Requete SQL avec date !
    Par sab_etudianteBTS dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/02/2007, 22h49
  3. [C# et Asp.net] requete SQL avec date
    Par misscricri dans le forum Accès aux données
    Réponses: 4
    Dernier message: 20/02/2007, 17h31
  4. [SQL] Requete sql avec dates
    Par SergeF dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/03/2006, 17h53
  5. [VB.NET] Requete sql et date
    Par mic56 dans le forum Accès aux données
    Réponses: 11
    Dernier message: 03/06/2004, 11h39

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