Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 03/08/2011, 12h30   #1
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : janvier 2011
Messages : 48
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 48
Points : 13
Points : 13
Par défaut Probleme "having" ou "min()" procedure stockée

Bonjour, je souhaite récupérer le nombre d'utilisateur par pays mais qui ont une MIN date comprise entre deux attributs de la procédure stockée @start et @stop et appartenir a un client précis.

La procédure doit se faire sur 3 tables:

Code :
1
2
3
4
5
6
7
8
 
SELECT COUNT(U.pays) AS [Count],
U.pays
FROM Tab1 AS PQ
INNER JOIN Tab2 AS U ON PQ.mail=U.mail
INNER JOIN Tab3 AS PQ2 ON PQ.ID=PQ2.ID AND PQ2.client=@Client
GROUP BY U.pays
ORDER BY [Count] DESC;
tab1:
tab2:
tab3:
La requête pour le moment retourne le nombre d'utilisateur par pays et pour le bon client mais sur toute la table.
Il me faut en plus comme condition que la Min(Date) de tab1 soit comprise entre deux paramêtres: @start et @stop.

Si quelqu'un a une idée...
Kirua76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 17h50   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Est-ce que ceci donne ce que vous voulez ?

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
WITH U(mail) AS (
	SELECT mail
	FROM tab1
	INNER JOIN tab3
		ON tab1.id = tab3.id
	WHERE client = @client
	GROUP BY mail
	HAVING MIN(dte) BETWEEN  @start AND @stop
)
SELECT 
	pays,
	COUNT(U.mail) AS NbUtils
FROM tab2
LEFT OUTER JOIN U
	ON tab2.mail = U.mail
GROUP BY pays
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h25.


 
 
 
 
Partenaires

Hébergement Web