rg-berlin
Goto Top

Division durch 0 erlauben

Hallo Leute,

ich muss in MS SQL 2 Felder Dividieren und das 2te Feld kann aber auch mal 0 sein, das ist auch richtig so. Wie kann ich nun verhindern das das Script an der Stelle mit einer Fehlermeldung abbricht, sondern diese ignoriert. Ist sicher einfach, aber ich bin da noch nicht so fit. Danke

Content-Key: 63552

Url: https://administrator.de/contentid/63552

Printed on: April 19, 2024 at 23:04 o'clock

Member: wakko
wakko Jul 11, 2007 at 10:09:23 (UTC)
Goto Top
Moin,

ich würde das über ein case abfragen, also etwa so:
select case feld2
when 0 then 0
else feld1 / feld2 end
as divison
hoffe das ist so halbwegs MS SQL-Syntax....

Gruß,
Henrik
Member: AndreasHoster
AndreasHoster Jul 11, 2007 at 11:17:53 (UTC)
Goto Top
Nicht ganz syntaktisch richtig.
select Ergebnis = case feld2 = 0 then 'Div by Zero' else feld1 / feld2 end from Tabelle
Member: rg-berlin
rg-berlin Jul 11, 2007 at 11:20:31 (UTC)
Goto Top
Ja danke, ein bischen haut es schon hin, aber ich hab da noch eine summe zu bilden.
Wenn ich die Summe weg lasse passt es schon.
Also es sieht so aus:

SELECT
SUM(BELEGP.Menge / ART._VPE )AS Menge

FROM V_Artikel_mitVPE AS ART , BELEGP , X_Zollnummern AS ZN
WHERE ART.Artikelnummer = BELEGP.Artikelnummer AND
ART._ZOLLNR = ZN.ZOLLNummer AND
(BELEGP.Belegtyp = 'R') AND
((BELEGP.Zeilentyp = 'A') OR(BELEGP.Zeilentyp = 'H'))


--das 'ART._VPE' ist der manchmal Nuller

mfg Ray
Member: rg-berlin
rg-berlin Jul 11, 2007 at 14:40:19 (UTC)
Goto Top
Danke ich glaub ich habs jetzt.

select
'Menge' =
SUM(case when ART._VPE = 0 then BELEGP.Menge + ART._VPE
else
BELEGP.Menge / ART._VPE
end)


FROM V_Artikel_mitVPE AS ART , BELEGP , X_Zollnummern AS ZN
WHERE ART.Artikelnummer = BELEGP.Artikelnummer AND
ART._ZOLLNR = ZN.ZOLLNummer AND
(BELEGP.Belegtyp = 'R') AND
((BELEGP.Zeilentyp = 'A') OR(BELEGP.Zeilentyp = 'H'))

mfg Ray