overflow

snefru

Nuovo Utente
10 Set 2014
11
0
0
Buonasera a tutti.
ho un quesito da porvi: in una query di calcolo senza record (in questo momento) mi da #ERRORE. La query svolge una divisione che essendo senza record divide 0/0.
domanda: è possibile nella query commutare l'errore in uno 0 in caso di record assenti?
un ringraziamento a tutti voi.
 

HolidaySoft.it

Utente Attivo
16 Ott 2012
105
0
0
Milano
www.holidaysoft.it
Ciao,
prova a vedere se questo esempio ti può essere utile:

SELECT Tabella1.NUM, Tabella1.DEN,
Tabella1.NUM/Tabella1.DEN AS DIV_KO,
IIF(Tabella1.DEN=0,0,Tabella1.NUM/Tabella1.DEN) AS DIV_OK
FROM Tabella1;

in questo modo verifichi se il denominatore è zero e in caso positivo non effettua la divisione ma restituisce zero

Michele


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 

snefru

Nuovo Utente
10 Set 2014
11
0
0
Michele, ti ringrazio per la risposta, sei sempre attento e veloce. Mi sopravvaluti il codice da come ho costruito il database non saprei come integrarlo.Il problema che ho dovuto costruire cinque query per arrivare al risultato che volevo, tu senz'altro l'avresti fatto con una, comunque la query interessata fa parte di una somma di altre query che mi da un risultato di saldo spese e chiaro che se una ha un valore null il saldo non viene visualizzato.Io volevo sapere se era possibile direttamente nella query trasformare l'errore in 0.Ti allego un db con solo le query interessate per renderti conto di che schifezza ho fatto.
ciao
Michelangelo
 

Allegati

  • db2.zip
    44,4 KB · Visite: 209

HolidaySoft.it

Utente Attivo
16 Ott 2012
105
0
0
Milano
www.holidaysoft.it
Ciao,
l'anomalia è nella query acqua1:

SELECT Sum(Nz(spese_ac![Mc consumati])) AS [tot_mc consumati], Sum(Nz(spese_ac!Euro)) AS tot_spesa, [tot_spesa]/[tot_mc consumati] AS [costo al Mc]
FROM anno LEFT JOIN spese_ac ON anno.[Anno di gestione]=spese_ac.[Anno Gestione];

come ti ho indicato nella prima risposta, per evitare l'errore nella divisione devi verificare il denominatore:
SELECT Sum(Nz(spese_ac![Mc consumati])) AS [tot_mc consumati], Sum(Nz(spese_ac!Euro)) AS tot_spesa, iif([tot_mc consumati]=0,0,[tot_spesa]/[tot_mc consumati]) AS [costo al Mc]
FROM anno LEFT JOIN spese_ac ON anno.[Anno di gestione]=spese_ac.[Anno Gestione];

Per il resto, ho visto che fai parecchie query e hai solo 2 tabelle dati .... un pò troppe. Magari per questo giro, se ci dai le formule di ciò che ti serve, possiamo vedere se può essere realizzato in modo più semplice

Ciao
Michele


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 

snefru

Nuovo Utente
10 Set 2014
11
0
0
HO VISTO LA LUCE……………a parte gli scherzi nel tuo primo intervento non l’avevo capito il codice adesso che l’ho visto nella query è stato molto piu chiaro. Vorrei precisarti che sono un hobbista del database ed è grazie a professionisti come te che prestano la loro opera in questi interessanti forum che si riesce ad intravvedere un po’ di luce. Senz’altro si può fare di meglio il problema è che non ho le basi per poter sviluppare qualcosa di piu uniforme ed efficiente. Prima di sviluppare un db non creo una struttura su carta ma affido tutto alla mia memoria,quello che sò lo trovo in internet guardando esempi per poi provare e riprovare ed infine approdare a ciò che mi serve.
Comunque la formula e semplice ho due tabelle: 1tabella dove vengono inseriti 4 bollette con la spesa e i MC consumati , si sommano le spese e i MC totali di queste bollette e si divide il totale spesa fratto il totale MC consumati da cui si ricava la spesa al MC dell’acqua. Nella seconda tabella si inseriscono le letture dei MC iniziali e quelli finali da cui si ricava il totale dei MC che ognuno ha consumato questi vengono moltiplicati per il costo al MC per avere la spesa cadauno. Infine dopo aver sommato il consumo dei MC cadauno si sottraggono ai MC totali della prima tabella l’eccedenza dei MC viene moltiplicata per il costo al MC e la spesa viene divisa equamente fra tutti.

praticamente i dati da ricavare sono: spesa totale acqua= bollette somma totale dei MC acqua=bollette MC acqua cadauno= let_iniziale e finale dai contatori installati negli appartamenti costo al MC=ricavato dalla spesa totale e i MC totali delle bollette differenza MC= tra la somma totale MC e la somma totale dei MC cadauno infine la differenza dei MC viene divisa tra gli 8 condomini e sommata alla spesa dei MC che ognuno ha consumato nel suo appartamento.
Se hai voglia di farlo, per quanto sia possibile vorrei che mi spiegassi come arrivi al risultato e quali sono i criteri.
RINGRAZIO FAVOLOSAMENTE TE E TUTTO LO STAFF DI QUESTO FORUM
 

Discussioni simili