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 :

Requête SQL découper en période avant jointure


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut Requête SQL découper en période avant jointure
    Bonjour à tous,
    je me permets de poser la question car je n'ai pas trouver après quelques recherches.
    Voilà je suis entrain de concevoir une requête permettant de calculer une exhaustivité de saisie.
    cela concerne le monde de la santé. J'ai des lignes avec des séjours patients, avec date de début et de fin de présence, et de l'autre côté des saisies faites par les utilisateurs.
    Je dois indiquer les semaines pour lesquelles aucunes saisies ne sont faites.
    Ma requête pour extraire les données saisies est faite, celle pour les séjours également, par contre je calle concernant le découpage de chaque séjour en semaines. Je penche pour l'utilisation d'une table temporaire, mais je ne sais pas comment découper chaque "séjours" en semaine (une semaine courant du Lundi 00h00 au dimanche 23h59).
    Merci d'avance de votre aide.
    Cordialement.

  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
    Avec la fonction DATEPART, je pense que vous devriez trouver votre bonheur.

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Avec la fonction DATEPART, je pense que vous devriez trouver votre bonheur.
    Bonjour Kropernic et merci de votre réponse rapide.
    Mais ma problématique est de savoir pour chaque semaine si une saisie a été faite.
    Comment la fonction datepart va-t-elle me permettre le découpage en semaines ?
    (je n'aurais qu'une seule ligne). Je ne vois pas la syntaxe à adopter (désolé je ne suis pas un expert).
    Merci d'avance de votre réponse.

    Cordialement.

  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
    Je suis loin d'être un expert également.

    La fonction DATEPART vous permet de récupérer le numéro de la semaine d'une date donnée. A partir de là,il devrait être possible de faire un GROUP BY sur cette valeur.

    Après, sans la structure de vos tables, difficile de vous aider davantage dans l'écriture de la requête.

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Vous avez raison, un problème mal expliqué ne trouvera jamais de solution.
    Voici donc exposer les données dont je dispose en base :
    Je vais essayer de faire simple car je requête de nombreuses tables pour récupérer les infos.
    j'ai une requête qui me permet de lister les séjours patient sur lesquels je travaille. j'obtiens la structure ci-dessous :
    ID_PATIENT - NOM_PATIENT - PRENOM_PATIENT - DEBUT_SEJOUR - FIN SEJOUR - LIEU
    000001 - Toto - Robert - 25/10/2011 - null - 1310
    000002 - Titi - Antoinette - 05/06/2011 - 12/09/2011 - 1320

    J'ai une autre requête qui récupére les données saisies, je récupère les données suivante :
    ID_PATIENT - DATE_SAISIE - SEMAINE_SAISIE
    000001 - 19/10/2011 - 42/2011
    000001 - 27/10/2011 - 43/2011
    000001 - 04/11/2012 - 44/2011

    Si je croise les 2, pas de problèmes : j'obtiens les semaines pour lesquelles des saisies ont été réalisées et les informations sur les patients et séjours concernés.
    Mais Je dois mettre en évidence les semaines pour lesquelles aucune saisie n'a été faite alors que le patient étais présent.

    Je pensais créer une table dans laquelle j'initialiserais une ligne par semaine, avec date de début et de fin, du type :
    JOUR_DEBUT_SEMAINE - FIN_DEBUT_SEMAINE - NUMERO_SEMAINE
    03/01/2011 00.00 - 09/01/2011 23.59 - 012011
    10/01/2011 00.00 - 16/01/2011 23.59 - 012011
    17/01/2011 00.00 - 23/01/2011 23.59 - 012011

    Avec laquelle je pourrais faire la jointure, mais est-ce la meilleure solution ?
    Est-il plus simple de générer une table temporaire sur la période étudiée dans la requête ? Comment alimenter cette table (temporaire ou jusqu'en 2020) via une requête ?

    Voilà, je m'aperçois qu'en expliquant je précise les contours de mon problème mais je ne sais pas par quel bout le prendre pour qu'il soit le plus simple à traiter.
    merci d'avance de votre aide.
    Cordialement.

  6. #6
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Je me réponds à moi-même :
    voici un lien pour créer une table de dates, après moultes recherches sur ce site :

    http://blog.developpez.com/elsuket/p...able-de-dates/

    Il ne me manque plus qu'à finaliser ma requête...
    Je poste la suite dès que j'ai avancé.

Discussions similaires

  1. Requête SQL : Jointure sur 3 tables - Bd Access 1997 & Delphi 7
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/12/2007, 09h57
  2. bouclage dans une requête SQL aec jointure
    Par lbar012001 dans le forum SQL
    Réponses: 4
    Dernier message: 31/10/2007, 17h58
  3. Evaluer des requêtes SQL avant leurs execution ?
    Par BkD35 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/04/2007, 20h20
  4. [Requêtes SQL] Problème de jointure ?
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/12/2006, 15h37
  5. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59

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