>All'interno di una vista, ho la seguente select:
>select superficie,
> canone,
>case when (superficie <> 0) then (Canone /12 / superficie)
> else 0 end as CanoneMensileMq
>from tabella
>
>E fino a qui nessun problema...ora mi è stato richiesto di mettere
>in CanoneMensileMq il valore stringa vuota("") se la divisione
>risolta impossibile (quando si ha superficie == 0).
>
>Se io al posto dello 0, metto "" mi va in errore riportandomi
>il seguente messaggio:
>
>--> Error converting data type varchar to numeric <--
>
>Tenendo presente che superficie e canone sono DECIMAL, come posso
>scrivere la select in modo giusto?
Ciao Gianluca,
L'errore che ottieni è corretto, in quanto il risultato di quella funzione CASE è un decimal mentre la stringa nulla non lo è
Casomai l'errore lo compie chi ti ha detto di restituire in un caso un numero e nell'altro una stringa.
Una soluzione "sporca" consiste nel restituire in ogni caso una stringa castando il risultato della divisione a varchar, ma devi valutare se lato client ha senso una cosa del genere.
SELECT
superficie
, canone
, CASE
WHEN superficie <> 0 THEN CAST(Canone/12/superficie AS varchar(10))
ELSE ''
END AS CanoneMensileMq
FROM tabella;
Ho castato il risultato in una stringa a lunghezza variabile di 10 caratteri. Modifica opportunamente tale valore in base al risultato desiderato.
>Grazie a chiunque mi aiuterà!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org