Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 12/09/2011 16:18:25
- baradji
- Membre
overlaps sur des numeric
Salut,
je souhaite utiliser le principe de overlaps sur des nombres reals, mais apparemment, overlaps ne marche que sur les dates.
est ce que quelqu'un pourra me donner une indice pour resoudre ma requete ci-dessous?
SELECT (257.70::real , 283.20::real) OVERLAPS (min(met_from) , max(met_to) )
from meters WHERE met_hol_id = '7_GAR-09-02'
resultat:
ERROR: function pg_catalog.overlaps(real, real, real, real) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Merci
Hors ligne
#2 12/09/2011 16:38:31
- kenrio
- Membre
Re : overlaps sur des numeric
bonjour,
overlaps fonctionne que sur des dates, donc faut trouver un autre moyen de faire ce que tu veux, tu devrais être un peu plus loquace sur le but recherché ?
Hors ligne
#3 13/09/2011 16:24:23
- baradji
- Membre
Re : overlaps sur des numeric
voila, j'ai mis en place une fonction pour les overlaps sur les numeric avec valeur de retour un boolean. j'espere que cela va servir a d'autres
CREATE OR REPLACE FUNCTION "public"."func_overlap_hole" (varchar, numeric,numeric)
RETURNS BOOLEAN AS $$
DECLARE
mon_record BOOLEAN;
hole_id ALIAS FOR $1;
hole_start ALIAS FOR $2;
hole_end ALIAS FOR $3;
BEGIN
SELECT
CASE WHEN
(
((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) > hole_start)
AND
((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) >= hole_end)
)
OR
(
((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) <= hole_start
AND
((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) < hole_end
)
THEN TRUE
ELSE FALSE END into mon_record;
RETURN mon_record ;
END
$$
LANGUAGE 'plpgsql'
SECURITY DEFINER;
Hors ligne
Pages : 1