tim1986
Goto Top

SQL Update abfrage gibt NULL zurück

Hy,
hab ma wieder n kleines Problem und komm ned weiter...
ums kurz zu machen,
ich möchte summierte Umsatzwerte in eine Spalte eintragen...
das ganze funktioniert auch super, bis ich von den Umsätzen die Guschriften abziehen will, wenn da keine vorhanden ist wird aus Umsatz - Gutschrift, Umsatz -NULL
und in diesem zuge auch das ergebniss NULL
hier der code zum verständnis...
use SL_M9999;
go
update kunden set _umsatzdj=
((
select sum (eurobrutto)
from beleg 
where belegtyp = 'R'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2009'  
) 
-
(
select sum (isnull(eurobrutto,0))
from beleg 
where belegtyp in ('S','G')   
and Adressnummer = '1'   
and datepart (Year,datum)= '2009'  
)),
_umsatzvj=((
select sum (eurobrutto)
from beleg 
where belegtyp = 'R'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2008'  
)
-
(
select sum (isnull(eurobrutto,0)) 
from beleg 
where belegtyp = 'G'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2008'  
))
where Nummer = '1'  
go

Content-Key: 111370

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

Printed on: April 24, 2024 at 05:04 o'clock

Member: it-frosch
it-frosch Mar 13, 2009 at 20:18:42 (UTC)
Goto Top
Hallo tim1986,

was bekommst du denn zurück wenn du die Queries für die Gutschriften einzeln ausführt?
Member: tim1986
tim1986 Mar 13, 2009 at 20:29:07 (UTC)
Goto Top
hallo it-frosch,
da bekomme ich auch NULL...
es kommt auf jeden fall wenn es keine Gutschriften (Belegtyp in (''G,'S')) gibt...n lösungsansatz währe wenn ich für diese procedure NULL sagen würde das es 0 bzw. 0,00 währe... hab aber leider keine ahrnung wie?!
Member: it-frosch
it-frosch Mar 13, 2009 at 20:41:04 (UTC)
Goto Top
hallo tim1986,

mal mit
isnull
(
select sum (isnull(eurobrutto,0))
from beleg
where belegtyp = 'G'
and Adressnummer = '1'
and datepart (Year,datum)= '2008'
),0)

versucht.

Ich kann es bei mir nicht testen. Mein Firebird versteht isnull nicht und datepart habe ich nicht mit eingebunden als UDF.
Member: tim1986
tim1986 Mar 13, 2009 at 21:27:58 (UTC)
Goto Top
super dein tipp hat mich drauf gebracht...
in verbindung mit der group by klausel hats dann endlich gegeht
ich poste hier nochma den kompletten code vielen dank nochma...
use SL_M9999;
go
update kunden set _umsatzdj=((
select sum (eurobrutto)
from beleg 
where belegtyp = 'R'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2009'  
) 
-
isnull((
select sum (isnull(eurobrutto,0))
from beleg 
where belegtyp in ('S','G')   
and Adressnummer = '1'   
and datepart (Year,datum)= '2009'  
Group by eurobrutto),0)),
_umsatzvj=((
select sum (eurobrutto)
from beleg 
where belegtyp = 'R'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2008'  
)
-
isnull((
select sum (isnull(eurobrutto,0)) 
from beleg 
where belegtyp = 'G'   
and Adressnummer = '1'   
and datepart (Year,datum)= '2008'  
Group by eurobrutto),0))
where Nummer = '1'  
go