|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour
Je souhaiterais faire la répartition d'une Hospitalisation par jour calendaire entre 2 dates: Autrement dit: -Hospitalisations durent un certains nombre de jours, ont une date de début et une date de fin => recherche de la répartition par date calendaire du nombre de jours de présence en hospitalisation un jour donné: Ex: combien de malades ont été présents le 14 février 2011? => recherche de la répartition de toutes les présences en hospitalisation par jour de semaine: Lundi, Mardi etc: ex: Combien de jours de présence y-a t'il eu les Lundi, les mardis etc..; Les données de ma TABLE sont simples: ID_HSP (PK) DATE_ENT DATE_SORT Merci de votre aide |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Quelles sont les difficultés que vous rencontrez ?
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Je sais calculer les durées, pas la répartition par jour de chaque date incluse dans l'intervalle
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : décembre 2002 Messages : 82 ![]() |
Bonjour,
Le plus simple est peut être de calculer tous tes indicateurs puis de les stocker dans une table de fait (notion BI). Ton problème fait appel à des notions de stock(sauvegarder le nombre de patient par jour) et de mouvements de patients(E/S). Sinon tu peux peut-être utilisé une vue indexées !?. Cdt, |
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
quelque chose dans ce goût, pour une première piste :
Code :
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Pour moi il s'agit de faire un simple COUNT(*) en faisant un GROUP BY CAST(date_entr) avec un BETWEEN pour les dates ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#7 | ||||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour et merci de vos réponses.
J'approche avec la réponse d'elsuket,mais je ne vois pas comment distribuer les dates: Si je liste CHAQUE séjour avec Date d'Entrée, de Sortie et Durée cela me donne les bornes et le nombre de jours entre les bornes je ne vois pas comment mettre un BETWEEN puisque que j'ai déjà mis une condition: YEAR(DAT_ENT=2010) Code sql :
Si je fais un simple COUNT(*) et un GROUP BY sur CAST(DAT_ENT AS DATETIME), je n'ai la distribution que sur la date de la première borne, pas sur l'ensemble des dates entre les bornes: Code SQL :
Par rapport à la solution de 7gyY9w1ZY6ySRgPeaefZ le problème est que je ne veux pas que la date de la St Valentin!! ![]() Mais je veux AFFICHER pour CHAQUE jour calendaire de façon systématique, le nombre de présents le 01.01, le 02.01 etc jusqu'au 31.12, soit pour les 365 jours de l'année Cette solution me semble compliquée à mettre en oeuvre pour 365 jours,si j'ai bien compris la requête proposée |
||||
|
|
00
|
|
|
#8 | ||
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
tu peux faire un truc dans ce style:
Code :
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
||
|
|
00
|
|
|
#9 | ||
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
sorry, il manque le group by
Code :
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
||
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Merci, je comprends l'idée mais il doit y avoir une erreur de syntaxe quelque part car DATEADD a besoin de 3 arguments.
Si je remplace par: Code sql :
DATEADD(day,cast('2011-01-01' AS datetime)+@int)),COUNT(*) Cela ne fonctionne pas En essayant: Code sql :
DATEADD(day,cast('2011-01-01' AS datetime),@int)),COUNT(*) ni même: Code sql :
DATEADD(day,@INT,cast('2011-01-01' AS datetime))) |
|
|
00
|
|
|
#11 | ||
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
la j'ai pu tester et CA FONCTIONNE.
voila mon script complet Code :
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
||
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
voila le résultat
date_date nb 2011-01-04 00:00:00.000 2 2011-01-05 00:00:00.000 2 2011-01-06 00:00:00.000 2 2011-01-07 00:00:00.000 1 2011-01-08 00:00:00.000 1
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
|
|
00
|
|
|
#13 | ||||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour
Mon problème, avant de tester quoi que ce soit c'est: Code :
"Insert INTO MATABLE" les "n" VALUES A moins que l'on puisse pour chacune des 3 colonnes VALUES de MATABLE requêter de la façon suivante (mais je ne sais si cette syntaxe serait permise à supposer qu'elle fonctionne): Code sql :
Qu'en pensez-vous? Merci |
||||
|
|
01
|
|
|
#14 | |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Citation:
Comment dire... Matable est un nom générique d'exemple... C'est à vous d'adapter le code à votre structure !!! Où alors, il aurait fallu nous la fournir dès le début.
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
|
00
|
|
|
#15 | ||
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
il suffit de faire
Code :
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
||
|
|
00
|
|
|
#16 |
|
Membre émérite
![]() Serge RUQUETConsultant informatique Inscription : août 2006 Messages : 669 ![]() |
cette réponse n'a rien a voir avec le SQL mais peut vous aider dans votre quête (et pas requête
j'ai fait a peu près ce que vous voulez faire à l'hopital de dijon. Vous allez avoir les pb suivants en ne prenant que le nom (et prènom même): - les femmes qui se marient, qui divorcent. - les personnes doublons (DUPONT Maurice => 280 en france) - les décès => ils sortent quand - les personnes sous X - les erreurs des services admissions corrigées en cours de séjour et bien d'autres.... bonne chance
__________________
Errare humanum est, perseverare diabolicum (Sénèque) |
|
|
00
|
|
|
#17 | ||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Merci serge0934
Code :
-Pour la partie identito-vigilance j'en connais la problématique, mais en l'occurrence, pour revenir à mes séjours ce sont mes séjours que je vais découper en jours de présence/par jour calendaire et non pas les patients. En fait si je veux connaître les dates calendaires de présence d'un patient ou d'un groupe de patient, il suffit que je sélectionne lesdits patients. Donc dans la table temporaire c'est le numéro du séjour et les dates d'entrée et de sortie que je vais insérer Il en serait évidemment tout autre si les dates d'entrée et de sortie étaient dans la Table des patients, ce qui n'eût pas été logique en terme de conception de la base de donnée Si je voulais retrouver les patients à partir des séjours, c'est facile aussi puisque j'ai une clef secondaire dans ma table des séjours liant à un NIP Patient (la table initiale est évidemment plus fournie que les 3 colonnes que j'ai indiqué) Merci en tous cas, j'essaye tout cela vous tiens au courant |
||
|
|
00
|
|
|
#18 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Serge0934,
Merci INFINIMENT Ce script fonctionne parfaitement après 2-3 aménagements mineurs et a parfaitement répondu à mon besoin.
|
|
|
00
|
|
|
#19 | ||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour
Je l'avais vu puis oublié mais je n'arrive pas à comprendre ce que signifie le "a" à la 9ème ligne ci-dessous (désolé c'est sûrement idiot, mais je ne vois pas)! => je l'ai mis en GRAS L'enlever empêche ma requête de fonctionner (Message: Syntaxe Incorrecte vers le mot Clé GROUP BY), mettre n'importe quelle lettre donne le même résultat. Merci de votre réponse Code sql :
|
||
|
|
00
|
|
|
#20 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 724 ![]() |
Le A permet d'identifier la table virtuelle formée par votre sous requête dans la clause FROM.
++ |
|
00
|
Copyright © 2000-2012 - www.developpez.com