[ORACLE] utlisation des alias

utlisation des alias [ORACLE] - SQL/NoSQL - Programmation

Marsh Posté le 10-06-2013 à 17:12:04    

Bonjour,  
 
je voudrais faire ca  
 
select A, (select B from T) as "B" , A-B from C
 
L'idée étant d'utilisé le résultat de mon select B dans le calcul du 3ème champ
 
Est-ce possible ?
 
Comment ?
 
Merci

Reply

Marsh Posté le 10-06-2013 à 17:12:04   

Reply

Marsh Posté le 10-06-2013 à 17:25:51    

Ce n'est pas possible dans un  même "niveau" de select.

 

Le seul moyen, pour ne pas réécrire (SELECT B FROM T) serait d'utiliser une sous-requête.

 
Code :
  1. SELECT s.A, s.B, s.A-s.B as 'aMinusB'
  2. FROM (
  3.    SELECT A,
  4.    (SELECT B FROM T) as B
  5.    FROM C) as s
 

(Les alias ne sont pas tous nécessaires, plutôt pour clarifier)


Message édité par deliriumtremens le 10-06-2013 à 17:27:49
Reply

Marsh Posté le 10-06-2013 à 17:26:00    

pas possible car à ce moment là il ne sait pas ce qu'est B.
 
 
tu remets le (select B from T) dans ton 3ème champ, faisant donc A-(Select B from T) mais il faut être sûr que ça ne ramène qu'une seule ligne.

Reply

Marsh Posté le 10-06-2013 à 18:19:41    

Histoire de faire "propre", faudrait pas juste faire une truc comme ça ?  

Code :
  1. select C.A,T.B,C.A-T.B as 'diff'
  2. from
  3.    C,
  4.    T;


 
Et en plus les C.x et T.y ne sont pas utiles si A n'existe pas dans T et vis-versa
 
Mais je pense qu'il manque une jointure qq part (mais c'est pas dans la requête initiale...
 
Christophe

Reply

Marsh Posté le 11-06-2013 à 08:41:22    

Merci je vais tester tout ca

 

Pour la derniére je ne peux pas car j'utlise des SUM


Message édité par axl the mux le 11-06-2013 à 08:54:18
Reply

Marsh Posté le 11-06-2013 à 12:17:55    

heu, si c'est juste un "sum" qui te manque :

Code :
  1. select C.A,TSUM.B,C.A-TSUM.B as 'diff'
  2. from
  3.    C,
  4.    (select sum(X) as B from T) TSUM;

Reply

Sujets relatifs:

Leave a Replay

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