Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 08/08/2012 11:30:54
- damalaan
- Membre
requête avec where sur année et mois d'un timestamp
Bonjour,
J'ai la requête suivante
SELECT
A.trn_esp,
A.trn_tournee,
A.trn_usine,
B.mois,
A."EtTournee",
B."MoyLabo"*2 as Indicateur,
CASE
WHEN A."EtTournee" > (2::numeric * B."MoyLabo") THEN 'Alerte'::text
ELSE 'ok'::text
END AS "Alerte"
FROM
"vw_simuMoisMoyLabo" B,
"vw_simuMoisEtTournee" A
WHERE
(
B.trn_esp = A.trn_esp
AND
(
EXTRACT(YEAR FROM B.mois) = EXTRACT(YEAR FROM A.mois)
AND
EXTRACT(MONTH FROM B.mois) = EXTRACT(MONTH FROM A.mois)
)
)
ORDER BY trn_esp, "Alerte";
Je voudrais savoir si ce que j'ai fait sur le WHERE est judicieux ou non.
Y a t il un autre moyen de dire : je veux les lignes des tables A et B en faisant une jointure sur le mois et l'année d'un timestamp?
Dernière modification par damalaan (08/08/2012 11:31:15)
Hors ligne
#2 08/08/2012 12:04:21
- gleu
- Administrateur
Re : requête avec where sur année et mois d'un timestamp
Il serait peut-être plus simple de remplacer ça par un : to_char(B.mois, 'YYYYMM') = to_char(A.mois, 'YYYYMM')
Mais bon, ça ne change pas vraiment le problème.
Bizarre d'avoir une date sur une colonne appelée mois
Guillaume.
Hors ligne
#3 08/08/2012 15:15:42
- damalaan
- Membre
Re : requête avec where sur année et mois d'un timestamp
Bizarre d'avoir une date sur une colonne appelée mois : c'est une "fausse" date car il n'y a que le mois et l'année qui m'intéresse, le jour est toujours à 1
Mais comme suggéré par Marc Cousin dans une réponse à un de mes posts précédents, il est plus simple de faire des calculs :
dans la table de départ, le mois est stocké sous forme numérique du genre 1208, mais cela pose problème pour faire des calcul du genre 1201 - 1mois; je l'ai donc passé en timestamp (mais je n'ai pas changé le nom!)
Passé de
EXTRACT(YEAR FROM B.mois) = EXTRACT(YEAR FROM A.mois)
AND
EXTRACT(MONTH FROM B.mois) = EXTRACT(MONTH FROM A.mois)
à
to_char(B.mois, 'YYYYMM') = to_char(A.mois, 'YYYYMM')
est tout de même un peu plus simple!
merci
Hors ligne