PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 13/03/2013 22:05:03

damalaan
Membre

Modifier un arrondi en fonction de la valeur d'un champ

Bonjour,

dans une table tbl_stat_sta je stocke des données sta_valeur dont le format peut changer en fonction de ana_id.
sta_valeur est toujours numérique mais peut être entier, décimal avec 2 ou 3 chiffres après la virgule.
j'ai donc assigné à sta_valeur la propriété numeric (7,3) permettant de couvrir tous mes besoins.

ma question est donc la suivante: comment puis je controler l'affichage lors des requêtes (calcul de moyenne)
pour ana_id = 1, je voudrais un affichage entier, donc 0 décimal
pour ana_id = 2, un décimal à 1 chiffre après la virgule
etc

Je pensais stocker cette propriété dans la table tbl_analyse_ana, puis l'utiliser dans un round, mais je ne sais comment récupérer la précision derrière la virgule?

CREATE TABLE tbl_stat_sta
(
  sta_id bigserial NOT NULL,
  sta_date date,
  sta_esp integer,
  sta_valeur numeric(7,3),
  ana_id integer,
  CONSTRAINT sta_id PRIMARY KEY (sta_id),
  CONSTRAINT ana_id FOREIGN KEY (ana_id))
CREATE TABLE tbl_analyse_ana
(
  ana_id integer NOT NULL,
  ana_libelle character(50),
  CONSTRAINT ana_id PRIMARY KEY (ana_id)
)

merci

Dernière modification par damalaan (14/03/2013 21:25:08)

Hors ligne

#2 18/03/2013 22:35:58

rjuju
Administrateur

Re : Modifier un arrondi en fonction de la valeur d'un champ

Bonjour,

vous pouvez utiliser CASE WHEN :

SELECT CASE ana_id WHEN 1 THEN sta_valeur::numeric(7,0) WHEN 2 THEN sta_valeur::numeric(7,1) END FROM ...

Hors ligne

Pied de page des forums