SQl: affichage de colonnes virtuelles

SQl: affichage de colonnes virtuelles - SQL/NoSQL - Programmation

Marsh Posté le 25-05-2009 à 12:53:29    

Salut,
 
J'ai besoin d'aide pour une requête, voici l'énoncé du problème:
 
BDD: PostgreSQL
 
J'ai une table tbl contenant une colonne A, de type integer. Je souhaite afficher simultanément 3 colonnes que nous appellerons B,C et D, affichant les valeurs x contenues dans A, comme suit:
- B: x =< 100
- C: 100 < x =< 500
- D: x > 500
 
Rien de bien compliqué jusque là. Je souhaite cependant le faire sans créer de table temporaire. L'idéal serait une vue. J'ai sinon pensé à créer 3 colonnes additionnelles dans la table tbl et de les mettre à jour avant chaque affichage, mais je trouve ça un peu lourd.
 
Je précise, pour lever toute ambiguité, que les colonnes B,C et D n'existent que virtuellement.
 
Quelqu'un a une idée ?


---------------
Ravèt pa janmen ni rézon douvan poul
Reply

Marsh Posté le 25-05-2009 à 12:53:29   

Reply

Marsh Posté le 25-05-2009 à 15:09:23    

j'ai un peu de mal à voir l'intérêt, et donc l'implémentation de ce truc... tu peux développer?
 
à priori qqchose ressemblant à ca devrait pouvoir marcher, mais ca me parait bien cracra...

Code :
  1. SELECT a,
  2.        CASE WHEN a<=100 THEN a
  3.             ELSE 0
  4.        END as b,
  5.        CASE WHEN a > 100 and a <= 500 THEN a
  6.             ELSE 0
  7.        END as c,
  8.        CASE WHEN a>500 THEN a
  9.             ELSE 0
  10.        END as d
  11.     FROM test;


Reply

Marsh Posté le 25-05-2009 à 15:24:30    

pataluc a écrit :

j'ai un peu de mal à voir l'intérêt, et donc l'implémentation de ce truc... tu peux développer?
 
à priori qqchose ressemblant à ca devrait pouvoir marcher, mais ca me parait bien cracra...

Code :
  1. SELECT a,
  2.        CASE WHEN a<=100 THEN a
  3.             ELSE 0
  4.        END as b,
  5.        CASE WHEN a > 100 and a <= 500 THEN a
  6.             ELSE 0
  7.        END as c,
  8.        CASE WHEN a>500 THEN a
  9.             ELSE 0
  10.        END as d
  11.     FROM test;




 
On vient de me filer une réponse sur developpez.net qui utilise aussi CASE, c'est tout à fait ce que je cherchais.
 
Ne me demande pas à quoi ça sert  [:cosmoschtroumpf] , c'est un gars du service client qui m'a demandé ça, il ne voulait pas utiliser ORDER BY.
 
Enfin merci quand même  :jap:


---------------
Ravèt pa janmen ni rézon douvan poul
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed