Vous n'êtes pas identifié(e).
Pages : 1
Petite information complémentaire : la fonction a également été modifiée pour prendre en entrée un tableau ... désolé pour l'oubli
HackuH
Bonjour,
Merci gleu pour ta réponse.
Cependant, j'avais essayé cette solution mais j'avais le même résulta soit un record.
Ce matin après une bonne petite prise de tête, j'ai trouvé une solution :
select * from "POUET"(all(select (array_accum("IDREJET")) as tst from "REJET" where "DTREJ" = '2012-06-26'))
Bonne journée à tous
HackuH
Bonjour,
J'aurais besoin d'aide concernant un petit soucis de sortie d'informations, je m'explique :
J'ai une fonction qui prend en paramètre un entier et qui me retourne une table.
Puis je fais une requête appelant cette fonction et cela me retourne un record pour chaque tuple.
Est-il possible d'obtenir le même affichage que le résultat de ma fonction initiale ?
Merci de votre aide.
Ci-dessous les différents morceau de code (bon, on dira rien sur l'optimisation ... :-) ):
la fonction :
CREATE OR REPLACE FUNCTION "POUET"(IN _idrejet integer DEFAULT (-1))
RETURNS TABLE("1" integer, "2" integer, "3" integer, "DTE" date, "A CLOTURER" boolean) AS
$BODY$
/************************************************************
CTE
************************************************************/
with
_lst_adh as (
select
reg."ADH" as "1",
rel."ADH" as "2"
from
"REJET" rej
join "RGLT" reg using ("REGL")
join "RELAT" rel on rel."ADH_1" = reg."ADH"
where
CASE when $1 = -1 THEN rej."DTREJ" =(select max("DTREJ") from "ADH_REJET")
ELSE rej."IDREJ" = $1 end
),
/************************************************************
écéhance(s) due(s)
************************************************************/
_lst_ech_due as (
select
distinct *,("AN"||'-'||"MOIS"||'-01')::date as "DTE"
from
_lst_adh
join "ECHE" ech using ("IDADH")
where
"SOLDE"("IDECH") > 0
),
/************************************************************
4 echeances consécutives rejetées
************************************************************/
_lst_4_ech_due_consecutives as (
select "1","2","3",min("DTE") as "DTE"
from _lst_ech_due a
where
("DTE" - interval '1 month')::date in (select "DTE" from _lst_ech_due where "1"=a."1" and "2"=a."2" and "3"= a."3")
and ("DTE" - interval '2 month')::date in (select "DTE" from _lst_ech_due where "1"=a."1" and "2"=a."2" and "3"= a."3")
and ("DTE" - interval '3 month')::date in (select "DTE" from _lst_ech_due where "1"=a."1" and "2"=a."2" and "3"= a."3")
group by "1","2","3"
order by "1","2","3","DTE")
/************************************************************
resultat
************************************************************/
select "1","2","3",min("DTE") as "DTE" ,false as "A CLOTURER"
from _lst_ech_due a
where (select count(*) from _lst_4_ech_due_consecutives where "1"=a."1" and "2"=a."2" and "3"= a."3") = 0
GROUP BY "1","2","3"
union
select *,true from _lst_4_ech_due_consecutives
order by "1","2","3";
la requête qui m'embête :
select "POUET"("IDREJET") from "ADH_REJET" where "DTREJ" = '2012-06-26'
Pages : 1