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 :

Besoin d'aide pour une requete


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut Besoin d'aide pour une requete
    Bonjour,

    j'ai une table d'historique à remplir qui contient le numero du malade , sa date de debut de création et la date de fin de création .

    un malade peut avoir plusieurs dates de débuts , je dois calculer la date de fin pour chaque ligne pour obtenir le resultat suivant, la première date de fin est la dernière date de début pour un malade.

    exp :

    NUM_PATIENT DATE DEBUT DATE FIN
    00000011 1997-03-03 2010-05-18
    00000011 2010-05-18 2099-12-31
    je fais la requete suivante qui ne me donne pas le résultat attendu.

    SELECT A.NUM_PATIENT ,A.DATE DEBUT,ISNULL(MAX(B.DATE DEBUT),'2099-12-31') AS 'DATE FIN'
    From PATIENT A,PATIENT B
    WHERE A.NUM PATIENT=B.NUM PATIENT and A.NUM PATIENT='00000011'
    GROUP BY A.NUM_PATIENT ,A.DATE DEBUT

    j'obtiens le résultat suivant :

    NUM_PATIENT DATE DEBUT DATE FIN
    00000011 1997-03-03 2010-05-18
    00000011 2010-05-18 2010-05-18

    la valeur de la date de fin de la deuxième ligne doit être '2099-12-31'
    merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Tu fais un max de la date de début...

    Ce ne serait pas plutôt de la date de fin ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut Aide pour requete
    Merci grifou ,

    Mais au départ la date de fin est à null , c'est à moi de les calculer à partir de la date de début .

    les valeurs que je donnes sont celles que je dois trouver.

    Merci par avance

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ah ok, je pensais que l'exemple du début était un exemple des données de ta table...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut
    Avez vous une idée sur la manière de faire pour retrouver le résultat obtenu ?

    Merci par avance

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Quelle est la structure de la/les table/s où se trouvent les données sources ?

    EDIT :
    En attendant, voici ce à quoi j'arrive (il y a certainement plus élégant/performant comme une CTE récursive par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select 
    		id_patient, 
    		debut, 
    		isnull((select 
    						top 1 debut 
    				from 
    						tblTestDVP b 
    				where 
    						b.debut > a.debut 
    				order by 
    						debut asc),'2099-12-31')
    from
    		dbo.tblTestDVP a
    Voici la structure de la table que j'ai utilisé (en me basant sur les infos disponibles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    USE [test]
    GO
    /****** Object:  Table [dbo].[tblTestDVP]    Script Date: 05/07/2012 14:54:35 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[tblTestDVP](
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[id_patient] [int] NOT NULL,
    	[debut] [datetime] NOT NULL,
    	[fin] [datetime] NULL,
     CONSTRAINT [PK_tblTestDVP] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    Et le jeu de données de test que j'y ai inséré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into dbo.tblTestDVP (id_patient, debut) values (1, '2012-01-01')
    insert into dbo.tblTestDVP (id_patient, debut) values (1, '2012-01-25')
    insert into dbo.tblTestDVP (id_patient, debut) values (1, '2012-02-01')
    insert into dbo.tblTestDVP (id_patient, debut) values (1, '2012-04-01')

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

Discussions similaires

  1. Besoin d'aide pour une requete
    Par fabris dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2006, 20h15
  2. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/04/2006, 20h27
  3. besoin d'aide pour une requete
    Par Pigoulou dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/02/2006, 20h34
  4. Besoin d'aide pour une requete
    Par Okhotsk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/11/2005, 16h30
  5. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54

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