60 messaggi dal 02 luglio 2002
Salve,immaginate di avere la seguente tabella

Table_Alias
Nome as Varchar
campoA as float
campoB as float
campoC as float


immaginate di voler estrarre questi campi in una select e di avere come ultimo campo un campo calcolato che utilizzi la

seguente formula (a*b/c) dando al risultato della stessa il nome Koeff.


SELECT Nome,(campoA*campoB/campoC) as Koeff FROM Table_Alias

Fin qui tutto ok

Immaginate ora di aggiungere un 5° campo alla tabella chiamato "divisore" di tipo float

Nella mia select adesso vorrei aggiungere un altro campo calcolato chiamato Risultante così calcolato: (a*b/c) / divisore.

Se scrivo in questo modo la select

SELECT Nome,(campoA*campoB/campoC) as Koeff , (Koeff/divisore) as Risultante FROM Table_Alias

il motore database mi da il seguente errore "Il nome di colonna 'Koeff' non è valido."

Per farlo funzionare devo ripetere per intero la prima formula e poi applicare la divisione.


SELECT Nome,(campoA*campoB/campoC) as Koeff , ((campoA*campoB/campoC)/divisore) as Risultante FROM Table_Alias


Ora in questo caso la formula è banale e poco estesa ,ma immaginate di avere una formula iniziale (campoA*campoB/campoC) molto grande e di doverla ripetere per intero se vi serve per un altro calcolo nella select.
Questa diventa enorme e illegibile.

Non c'è un modo per usare un alias ,nel nostro caso "Koeff", già calcolato in precedenza??

Grazie
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
no, non e' possibile, in quanto devi sapere che l'esplosione della proiezione (cioe' l'insieme della SELECT list) e' un'operazione atomica e non spezzata in ognuno dei suoi componenti.. non e' quindi leggibile da sinistra verso destra o viceversa, in modo da poter fare riferimento a "quello prima", ma tutte le colonne vengono in effetti generate nel medesimo contesto.. come gia' hai sperimentato, devi quindi ricorrere alla ridefinizione della colonna calcolata con le opportune modifiche e via dicendo..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.