Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 13h53   #1
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Par défaut Requête répartition par jour calendaire entre deux dates

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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h50   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h07   #3
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Je sais calculer les durées, pas la répartition par jour de chaque date incluse dans l'intervalle
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 16h52   #4
Membre du Club
 
Inscription : décembre 2002
Messages : 82
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 82
Points : 66
Points : 66
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,
Glouferu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 18h00   #5
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
quelque chose dans ce goût, pour une première piste :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
WITH ma_table AS (
	SELECT 1 ID_HSP, DATE_ENT= '2011-02-14', DATE_SORT= '2011-02-14' union ALL
	SELECT 2 ID_HSP, DATE_ENT= '2011-02-14', DATE_SORT= '2011-02-15' union ALL
	SELECT 3 ID_HSP, DATE_ENT= '2011-02-13', DATE_SORT= '2011-02-15' union ALL
	SELECT 4 ID_HSP, DATE_ENT= '2011-02-13', DATE_SORT= '2011-02-14' union ALL
	SELECT 5 ID_HSP, DATE_ENT= '2011-02-12', DATE_SORT= '2011-02-13' union ALL
	SELECT 6 ID_HSP, DATE_ENT= '2011-02-15', DATE_SORT= '2011-02-15'
)
SELECT *
FROM ma_table
WHERE cast( '2011-02-14' AS datetime) 
			BETWEEN cast( convert (varchar, DATE_ENT , 111) AS datetime ) 
				AND cast (convert (varchar, DATE_SORT , 111) AS datetime )
Ce n'est pas très beau avec tous ces transtypages mais pour trouver les malades de la Saint Valentin, ça devrait le faire...
__________________
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 08h09   #6
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
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
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 14h16   #7
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
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 :
1
2
3
4
5
6
SELECT COUNT(*) AS Nb_SJR,ID_SJR AS NUM_SJR,CAST(DAT_ENT AS DATETIME) AS DE_SJR,DAT_ENT,DAT_SRT,DATEDIFF(DAY,DAT_ENT,DAT_SRT)AS DUREE_SJR
	FROM MATABLE
		WHERE YEAR(DAT_ENT)=2010
			GROUP BY ID_SJR ,DAT_ENT,DAT_SRT
			ORDER BY CAST(DAT_ENT AS DATETIME)
				COMPUTE SUM(COUNT(*))


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 :
1
2
3
4
SELECT COUNT(*)
    FROM MATABLE
       WHERE YEAR(MATABLE.DATE_ENT)=2010
            GROUP BY CAST(MATABLE.DATE_ENT AS DATETIME)

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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h17   #8
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
tu peux faire un truc dans ce style:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
CREATE TABLE #tmp_date
(
date_int int NOT NULL,
date_date datetime,
nb int);
 
declare @int int;
 
SET @int=0;
 
while @int < 365
BEGIN
	INSERT INTO #tmp_date (date_int,date_date,nb)
	SELECT cast(REPLACE(CONVERT(varchar(10),cast('2011-01-01' AS datetime),102),'.','') AS int)+@int,
	DATEADD(cast('2011-01-01' AS datetime)+@int),COUNT(*)
	FROM matable
	WHERE date_ent <=DATEADD(cast('2011-01-01' AS datetime)+@int)
	AND date_sort >=DATEADD(cast('2011-01-01' AS datetime)+@int);
 
	SET @int=@int + 1;
END;
 
SELECT date_date,nb FROM #tmp_date ;
pour l'année 2011
__________________
Errare humanum est, perseverare diabolicum (Sénèque)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h21   #9
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
sorry, il manque le group by

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
CREATE TABLE #tmp_date
(
date_int int NOT NULL,
date_date datetime,
nb int);
 
declare @int int;
 
SET @int=0;
 
while @int < 365
BEGIN
	INSERT INTO #tmp_date (date_int,date_date,nb)
	SELECT cast(REPLACE(CONVERT(varchar(10),cast('2011-01-01' AS datetime),102),'.','') AS int)+@int,
	DATEADD(cast('2011-01-01' AS datetime)+@int),COUNT(*)
	FROM matable
	WHERE date_ent <=DATEADD(cast('2011-01-01' AS datetime)+@int)
	AND date_sort >=DATEADD(cast('2011-01-01' AS datetime)+@int)
	GROUP BY cast(REPLACE(CONVERT(varchar(10),cast('2011-01-01' AS datetime),102),'.','') AS int)+@int,
	DATEADD(cast('2011-01-01' AS datetime)+@int);
 
	SET @int=@int + 1;
END;
 
SELECT date_date,nb FROM #tmp_date ;
__________________
Errare humanum est, perseverare diabolicum (Sénèque)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h52   #10
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
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(*)
cela ne fonctionne pas non plus

ni même:

Code sql :
DATEADD(day,@INT,cast('2011-01-01' AS datetime)))
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 18h48   #11
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
la j'ai pu tester et CA FONCTIONNE.
voila mon script complet

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 /*
create table matable
(
nom varchar(50),
date_ent datetime,
date_sort datetime
);
 
insert into matable (nom,date_ent,date_sort)
values ('toto','2011-01-05','2011-01-05');
insert into matable (nom,date_ent,date_sort)
values ('tata','2011-01-04','2011-01-06');
insert into matable (nom,date_ent,date_sort)
values ('titi','2011-01-04','2011-01-04');
insert into matable (nom,date_ent,date_sort)
values ('tutu','2011-01-06','2011-01-08');
*/
CREATE TABLE #tmp_date
(
date_int int NOT NULL,
date_date datetime,
nb int);
 
declare @int int;
 
SET @int=0;
 
while @int < 365
BEGIN
	INSERT INTO #tmp_date (date_int,date_date,nb)
	SELECT date1,date2,COUNT(*) FROM (
	SELECT cast(REPLACE(CONVERT(varchar(10),cast('2011-01-01' AS datetime),102),'.','') AS int)+@int AS date1,
	DATEADD(day,@int,cast('2011-01-01' AS datetime)) AS date2
	FROM matable
	WHERE date_ent <=DATEADD(day,@int,cast('2011-01-01' AS datetime))
	AND date_sort >=DATEADD(day,@int,cast('2011-01-01' AS datetime))
	) a
	GROUP BY date1,date2;
 
	SET @int=@int + 1;
END;
 
SELECT date_date,nb FROM #tmp_date ;
DROP TABLE #tmp_date;
__________________
Errare humanum est, perseverare diabolicum (Sénèque)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 18h49   #12
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
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)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h45   #13
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Bonjour

Mon problème, avant de tester quoi que ce soit c'est:

Code :
1
2
3
4
5
6
7
8
INSERT INTO matable (nom,date_ent,date_sort)
VALUES ('toto','2011-01-05','2011-01-05');
INSERT INTO matable (nom,date_ent,date_sort)
VALUES ('tata','2011-01-04','2011-01-06');
INSERT INTO matable (nom,date_ent,date_sort)
VALUES ('titi','2011-01-04','2011-01-04');
INSERT INTO matable (nom,date_ent,date_sort)
VALUES ('tutu','2011-01-06','2011-01-08');
Parce que "MATABLE" (nom,date_ent,date_sort) a des dizaines de milliers de lignes, et je ne peux insérer 1 par une pour tous les
"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 :
1
2
INSERT INTO MATABLE (NOM, DATE_ENT,DATE_SORT)
VALUES (SELECT DISTINCT NOM ,DATE_ENT,DATE_SORT FROM monautretable)

Qu'en pensez-vous?

Merci
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 14/11/2011, 15h50   #14
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par Dr_No Voir le message
Parce que "MATABLE" (nom,date_ent,date_sort) a des dizaines de milliers de lignes, et je ne peux insérer 1 par une pour tous les
"Insert INTO MATABLE" les "n" VALUES
Hum....
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 16h29   #15
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
il suffit de faire

Code :
1
2
3
4
INSERT INTO MATABLE (NOM, DATE_ENT,DATE_SORT)
SELECT NOM ,DATE_ENT,DATE_SORT 
FROM monautretable
GROUP BY NOM ,DATE_ENT,DATE_SORT
__________________
Errare humanum est, perseverare diabolicum (Sénèque)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 16h36   #16
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
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)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 11h36   #17
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Merci serge0934

Code :
1
2
3
4
INSERT INTO MATABLE (NOM, DATE_ENT,DATE_SORT)
SELECT NOM ,DATE_ENT,DATE_SORT 
FROM monautretable
GROUP BY NOM ,DATE_ENT,DATE_SORT
répond déjà à la question fonctionnelle pour essayer votre script


-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
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 13h52   #18
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Par défaut Script fonctionne OK

Serge0934,

Merci INFINIMENT

Ce script fonctionne parfaitement après 2-3 aménagements mineurs et a parfaitement répondu à mon besoin.

Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 13h19   #19
Futur Membre du Club
 
Homme
Médecin Département d'Information Médicale (DIM)
Inscription : janvier 2009
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Médecin Département d'Information Médicale (DIM)
Secteur : Santé

Informations forums :
Inscription : janvier 2009
Messages : 77
Points : 18
Points : 18
Par défaut Pour serge0934

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	INSERT INTO #tmp_date (date_int,date_date,nb)
	SELECT date1,date2,COUNT(*) FROM (
	SELECT cast(REPLACE(CONVERT(varchar(10),cast('2011-01-01' AS datetime),102),'.','') AS int)+@int AS date1,
	DATEADD(day,@int,cast('2011-01-01' AS datetime)) AS date2
	FROM matable
	WHERE date_ent <=DATEADD(day,@int,cast('2011-01-01' AS datetime))
	AND date_sort >=DATEADD(day,@int,cast('2011-01-01' AS datetime))
	)a
	GROUP BY date1,date2;
 
	SET @int=@int + 1;
END;
 
SELECT date_date,nb FROM #tmp_date ;
DROP TABLE #tmp_date;
Dr_No est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 13h29   #20
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Le A permet d'identifier la table virtuelle formée par votre sous requête dans la clause FROM.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h11.


 
 
 
 
Partenaires

Hébergement Web