Verhinder delen door 0

Status
Niet open voor verdere reacties.

cbhonda

Gebruiker
Lid geworden
15 dec 2001
Berichten
169
Ik heb een database in SQL waaruit ik gegevens haal met een query.
Ze bestaat uit 2 velden met numerieke waarden
Het resultaat van de query is de som van de veld1 en veld2, maar veld1 moet gedeeld worden door de waarde van veld2.
Tot zover alles OK, maar soms is de uitkomst van veld2 nul en dan moet er geen deling uitgevoerd worden maar moet gewoon de waarde (som) van veld1 gegeven worden.

vb
veld1 10, 8, 12, 20
veld2 1, 3, 2, 4
resultaat 5

veld1 10, 8, 12, 20
veld2 0, 0, 0, 0
resultaat 50 en niet #deel0

kan je dit in de query direct verwerken met een 'if' of een 'not' ofzo ?
 
Dit is vrij simpel met een formule op te lossen:

Engels: =IF(A1=0;"Delen door 0 kan niet";B1/A1)
Nederlands =ALS(A1=0;"Delen door nul kan niet";B1/A1)

A1 is de cel waar "0" in kan komen te staan. De tekst "Delen door nul kan niet" is gewoon aan te passen (ook kun je er niets in zetten: ""). Laat wel de aanhalingstekens staan.

Kun je engelse opdrachten/woorden niet gebruiken in de NL versie?

In de Nederlandse versie van Excel XP worden nederlandse functies gebruikt:

Bijv:

IF = ALS
LOOKUP = ZOEKEN
MONTH = MAAND

Etcetera...


Je kunt de oplossing ook in je bestaande formule onderbrengen:

=als(isfout([jouw formule]);0;[jouw formule])

Met andere woorden:
Als de uitkomst van jou formule een foutmelding tot resultaat heeft, moet er een 0 (nul) worden geretourneerd; anders mag hij het resultaat van je formule gewoon weergeven.
 
Niet duidelijk

De SQL instructie staat niet in Excel maar in een SQL expressie builder en de data in een SQL tabel.(was misschien niet duidelijk door #deel0 maar ik wil daar mee zeggen dat die builder het delen door 0 ook niet aanvaard)
Daarom zou ik dus een pure SQL instructie moeten hebben die dit allemaal doet.
 
Onderstaande info legt de COALESCE functie uit. Dit is de ANSI SQL uitvoering van NVL (Oracle) of NULLIFF (Access). Er zijn dus andere mogelijkheden, maar ze zijn taal afhankelijk. COALESCE zou op alle sql databases moeten werken die zich conformeren aan ANSI SQL.

***
T-SQL's COALESCE() function lets you specify a number of expressions and COALESCE() will return the first non-null value from the group. Use the following form where expression is any data type and can equal most any valid expression:
COALESCE (expression [,…n])

The function doesn't limit the number of arguments, but they must all be of the same data type; the function returns the same data type as expression. When all arguments are NULL, COALESCE() returns NULL.

Remember the earlier MDB example that displays N/A when the Region value's null? Using COALESCE() provides a better solution (remember, COALESCE() isn't available in an MDB file). Instead of displaying the string N/A, the following view displays the employee's Country value:
SELECT TOP 100 PERCENT LastName, FirstName, COALESCE (Region, Country) AS Area
FROM dbo.Employees
ORDER BY LastName, FirstName
***

Suc6,
 
IT

De IT afdeling heeft het opgelost wanneer ik het te weten kom hoe zij het doen laat ik het nog wel weten.
Als ik tijd heb zal ik het wel eens testen met COALESCE().

Bedankt aan allen die hier moeite voor hebben gedaan.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan