Bonjour,

Je souhaite filtrer sur deux champs en même temps mais je me fais "jeter".

/edit : j'ajoute la requête complète pour clarifier mon problème/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT CAST(COUNT(*) AS FLOAT) / CAST(COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) AS FLOAT)
FROM TabLog
WHERE	Canal = @Canal
	AND Date >= @DateDebut
	AND Date < @DateFin
	AND source, destination NOT IN ( SELECT TOP 3 source, destination
						FROM TabLog
						WHERE	Canal = @Canal
							AND Date >= @DateDebut
							AND Date < @DateFin
						GROUP BY source, destination
						ORDER BY COUNT(*) DESC)
HAVING COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) > 0
/edit : précision sur le problème/
L'idée est de calculer la moyenne horaire du nombre de logs sur un canal @Canal pendant la période @DateDebut-@DateFin en ne considérant que les heures où il y a eu du trafic, SANS TENIR COMPTE DES TROIS PLUS GROS CONSOMMATEURS.
J'ai résolu le problème en bidouillant un cast(V1 as varchar)+':'+cast(V2 as varchar) pour n'avoir qu'une seule variable.
/edit : j'ajoute le code qui marche mais qui n'est pas propre/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT CAST(COUNT(*) AS FLOAT) / CAST(COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) AS FLOAT)
FROM TabLog
WHERE	Canal = @Canal
	AND Date >= @DateDebut
	AND Date < @DateFin
	AND CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR) NOT IN ( SELECT TOP 3 CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR)
						FROM TabLog
						WHERE	Canal = @Canal
							AND Date >= @DateDebut
							AND Date < @DateFin
						GROUP BY CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR)
						ORDER BY COUNT(*) DESC)
HAVING COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) > 0
Mais je voulais savoir s'il y avait solution plus propre à mon problème.

Merci.