OVH Cloud OVH Cloud

Requete avec Colonne resultat de requete!!!

2 réponses
Avatar
JOE DALTON
Bonsoir
La requête ci dessus s'exécute bien mais ne me renvoie pas ce que je voulais
faire. Vous pouvez la regarder et essayer de voir comment je peux régler mon
problème.
Je veux lancer une requête contenant des colonnes qui sont les résultats
d'autres requêtes avec comme paramètre la valeur de l'une des colonnes de la
requête principale.
Voila en résumé ce que je veux faire
Merci de votre aide

SELECT APPELS.MATRICULE AS MATRIC, OPERATEURS.NOM AS OPERATEUR, COUNT(*) AS
TOTAL,
SUM(APPELS.DUREE_T) AS DUREE_T,
SUM(APPELS.DUREE_D) AS DUREE_D,
SUM(APPELS.DUREE_A) AS DUREE_A,
SUM(APPELS.DUREE_P) AS DUREE_P,
(SELECT COUNT(*) FROM APPELS where (sens = 'IN') AND (Trace Like
'%PAR%')
AND (DATE BETWEEN '01/01/2004' AND '01/04/2004')) AS
TOT_GEN_TRAITES,
(SELECT COUNT(ANI) FROM APPELS where sens = 'IN' AND Trace Like
'%ATE'+MATRICULE+'%' /*Je veux mettre ici le matricule récupérer sur la
première ligne*/
AND DATE BetWeen '01/01/2004' AND '01/04/2004') AS
TOT_TRAITES_OP
FROM APPELS RIGHT OUTER JOIN
OPERATEURS ON APPELS.MATRICULE = OPERATEURS.MATRICULE
WHERE (APPELS.MATRICULE LIKE '%____%')
AND (APPELS.[DATE] BETWEEN '01/01/2004' AND '01/04/2004')
AND (APPELS.SENS = 'IN')
GROUP BY APPELS.MATRICULE, OPERATEURS.NOM

2 réponses

Avatar
Tom
SELECT
APPELS.MATRICULE AS MATRIC,
OPERATEURS.NOM AS OPERATEUR,
COUNT(*) AS TOTAL,
SUM(APPELS.DUREE_T) AS DUREE_T,
SUM(APPELS.DUREE_D) AS DUREE_D,
SUM(APPELS.DUREE_A) AS DUREE_A,
SUM(APPELS.DUREE_P) AS DUREE_P,
(
SELECT COUNT(*)
FROM APPELS
where (sens = 'IN')
AND (Trace Like '%PAR%')
AND (DATE BETWEEN '01/01/2004' AND '01/04/2004')
) AS TOT_GEN_TRAITES,
(
SELECT COUNT(ANI)
FROM APPELS A2
where A2.sens = 'IN'
AND A2.Trace Like 'ATE'+APPELS.MATRICULE+'%'
AND DATE BetWeen '01/01/2004' AND '01/04/2004'
) AS TOT_TRAITES_OP
FROM APPELS RIGHT OUTER JOIN
OPERATEURS ON APPELS.MATRICULE = OPERATEURS.MATRICULE
WHERE (APPELS.MATRICULE LIKE '%____%')
AND (APPELS.[DATE] BETWEEN '01/01/2004'
AND '01/04/2004')
AND (APPELS.SENS = 'IN')
GROUP BY APPELS.MATRICULE, OPERATEURS.NOM



-----Message d'origine-----
Bonsoir
La requête ci dessus s'exécute bien mais ne me renvoie


pas ce que je voulais
faire. Vous pouvez la regarder et essayer de voir


comment je peux régler mon
problème.
Je veux lancer une requête contenant des colonnes qui


sont les résultats
d'autres requêtes avec comme paramètre la valeur de


l'une des colonnes de la
requête principale.
Voila en résumé ce que je veux faire
Merci de votre aide

SELECT APPELS.MATRICULE AS MATRIC, OPERATEURS.NOM AS


OPERATEUR, COUNT(*) AS
TOTAL,
SUM(APPELS.DUREE_T) AS DUREE_T,
SUM(APPELS.DUREE_D) AS DUREE_D,
SUM(APPELS.DUREE_A) AS DUREE_A,
SUM(APPELS.DUREE_P) AS DUREE_P,
(SELECT COUNT(*) FROM APPELS where (sens = 'IN')


AND (Trace Like
'%PAR%')
AND (DATE BETWEEN '01/01/2004'


AND '01/04/2004')) AS
TOT_GEN_TRAITES,
(SELECT COUNT(ANI) FROM APPELS where sens = 'IN'


AND Trace Like
'%ATE'+MATRICULE+'%' /*Je veux mettre ici le matricule


récupérer sur la
première ligne*/
AND DATE BetWeen '01/01/2004'


AND '01/04/2004') AS
TOT_TRAITES_OP
FROM APPELS RIGHT OUTER JOIN
OPERATEURS ON APPELS.MATRICULE =


OPERATEURS.MATRICULE
WHERE (APPELS.MATRICULE LIKE '%____%')
AND (APPELS.[DATE] BETWEEN '01/01/2004'


AND '01/04/2004')
AND (APPELS.SENS = 'IN')
GROUP BY APPELS.MATRICULE, OPERATEURS.NOM


.



Avatar
JOE DALTON
Merci Tom
Ca marche 5/5
Mais j'avais déjà trouvé une autre solution que je crois est la meilleure.
J'ai créé une table qui contient tous les champs que je désire renseignés.
Puis j'ai créé une procédure stoqués qui crée tous les jours à partir de
minuits des stats pour chaque opérateur et l'enregistre dans la table.
Maintenant je ne fais que des requêtes simples sur cette table.

Merci.

"Tom" a écrit dans le message de
news:17bbb01c418ce$2fb09dd0$
SELECT
APPELS.MATRICULE AS MATRIC,
OPERATEURS.NOM AS OPERATEUR,
COUNT(*) AS TOTAL,
SUM(APPELS.DUREE_T) AS DUREE_T,
SUM(APPELS.DUREE_D) AS DUREE_D,
SUM(APPELS.DUREE_A) AS DUREE_A,
SUM(APPELS.DUREE_P) AS DUREE_P,
(
SELECT COUNT(*)
FROM APPELS
where (sens = 'IN')
AND (Trace Like '%PAR%')
AND (DATE BETWEEN '01/01/2004' AND '01/04/2004')
) AS TOT_GEN_TRAITES,
(
SELECT COUNT(ANI)
FROM APPELS A2
where A2.sens = 'IN'
AND A2.Trace Like 'ATE'+APPELS.MATRICULE+'%'
AND DATE BetWeen '01/01/2004' AND '01/04/2004'
) AS TOT_TRAITES_OP
FROM APPELS RIGHT OUTER JOIN
OPERATEURS ON APPELS.MATRICULE = OPERATEURS.MATRICULE
WHERE (APPELS.MATRICULE LIKE '%____%')
AND (APPELS.[DATE] BETWEEN '01/01/2004'
AND '01/04/2004')
AND (APPELS.SENS = 'IN')
GROUP BY APPELS.MATRICULE, OPERATEURS.NOM



-----Message d'origine-----
Bonsoir
La requête ci dessus s'exécute bien mais ne me renvoie


pas ce que je voulais
faire. Vous pouvez la regarder et essayer de voir


comment je peux régler mon
problème.
Je veux lancer une requête contenant des colonnes qui


sont les résultats
d'autres requêtes avec comme paramètre la valeur de


l'une des colonnes de la
requête principale.
Voila en résumé ce que je veux faire
Merci de votre aide

SELECT APPELS.MATRICULE AS MATRIC, OPERATEURS.NOM AS


OPERATEUR, COUNT(*) AS
TOTAL,
SUM(APPELS.DUREE_T) AS DUREE_T,
SUM(APPELS.DUREE_D) AS DUREE_D,
SUM(APPELS.DUREE_A) AS DUREE_A,
SUM(APPELS.DUREE_P) AS DUREE_P,
(SELECT COUNT(*) FROM APPELS where (sens = 'IN')


AND (Trace Like
'%PAR%')
AND (DATE BETWEEN '01/01/2004'


AND '01/04/2004')) AS
TOT_GEN_TRAITES,
(SELECT COUNT(ANI) FROM APPELS where sens = 'IN'


AND Trace Like
'%ATE'+MATRICULE+'%' /*Je veux mettre ici le matricule


récupérer sur la
première ligne*/
AND DATE BetWeen '01/01/2004'


AND '01/04/2004') AS
TOT_TRAITES_OP
FROM APPELS RIGHT OUTER JOIN
OPERATEURS ON APPELS.MATRICULE OPERATEURS.MATRICULE
WHERE (APPELS.MATRICULE LIKE '%____%')
AND (APPELS.[DATE] BETWEEN '01/01/2004'


AND '01/04/2004')
AND (APPELS.SENS = 'IN')
GROUP BY APPELS.MATRICULE, OPERATEURS.NOM


.