Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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 ...
Julien.
https://rjuju.github.io/
Hors ligne