etnobommel1989
Goto Top

SQL Abfrage Wenn Dann Sonst

Ich hoffe das ich diesmal keine blöden Kommentare auf einer meiner Fragen bekomme, weil ich echt noch ein totaler Noob bin, aber ich hab wenigstens keine Probleme dies zu zugeben.

Nun meine Frage.

Ist es mit Accses möglich eine Abfrage zu erstellen, wo ich Abfrage : Wenn Spalte = LEER DANN Nix Tun SONST Führe Befehl aus.

Danke für eure Hilfe!!!

Content-Key: 137635

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: SlainteMhath
SlainteMhath Mar 08, 2010 at 08:45:50 (UTC)
Goto Top
Moin,

Was genau soll genn geschehen wenn die Spalte leer ist?

lg
Slainte
Member: etnobommel1989
etnobommel1989 Mar 08, 2010 at 08:47:34 (UTC)
Goto Top
Wenn Sie leer ist soll der Befehl einfach ignoriet werden. Also um es genauer zu formulieren will ich die Summe einer Spate bilden aber wenn diese Spalte leer sein sollte, soll der gesamte Ausdruck nicht beachtet also ignoriert werden.
Member: azzurro
azzurro Mar 08, 2010 at 08:52:10 (UTC)
Goto Top
Unter Oracle gibt es die Möglichkeit mit NVL() zu arbeiten.
Wenn z.B. bei einer Rechenoperation einer der beiden Werte null ist, dann ist das Ergebnis auch null (1 + 0 = 0).
Wenn du mit NVL arbeitest, ist 1 + 0 = 1.

Vielleicht gibt es sowas bei Access auch. Aber eigentlich ist NVL nicht sql-Standard.

Ciao
Member: etnobommel1989
etnobommel1989 Mar 08, 2010 at 08:54:32 (UTC)
Goto Top
Gibts denn da nix ähnliches wie z.B. Ist Nicht Null nur als Ist Nicht Leer
Member: SlainteMhath
SlainteMhath Mar 08, 2010 at 08:59:54 (UTC)
Goto Top
Moin,

Gibts denn da nix ähnliches wie z.B. Ist Nicht Null nur als Ist Nicht Leer
hm..

SELECT SUM(blubber) FROM tabelle WHERE NOT IsNull(blubber) 

sowas?
Member: etnobommel1989
etnobommel1989 Mar 08, 2010 at 09:10:02 (UTC)
Goto Top
Also um die Sache mal ganz genau zu beschreiben. Ich habe 12 Tabellen also von Januar bis Dezember, jeweils die Monatsrechnung von der Telekom. Daraus habe ich für jeden Monat eine Abfrage gestaltet wo man die Montsrechnung aufgesplittet nach Kostenstellen im Detail sich anschauen kann , d.h. wieviel Grundgebühr, wie viel d2,d1, eplus.

Wie gesagt is das für jeden Monat einzeln gemacht. Nun will ich aber noch eine Gesamtübersicht gestalten, wo von allen Monaten die Beträge zusammengerechnet werden. Um aber einen Abbruch der Abfrage zu verhindern will, weil von März bis Dezember noch keine Rechnungen vorliegen, also nur ungefüllte Tabellen, will ich das wenn die Tabelle leer ist, der Befehl einfach ignoriert wird.

Danke schön
Member: SlainteMhath
SlainteMhath Mar 08, 2010 at 09:36:28 (UTC)
Goto Top
Oha, face-smile Evtl. solltest Du dir mal Gedanken über das Datenmodell machen.

Soll heissen: wenn Du alle Tabellen in eine zusammenführst und mit einem Datumsfeld versiehst, wird die sache um den Faktur 5 bis 10 einfacher auszuwerten face-smile

Ansonsten kannst Du pro Tabelle eine Abfrage ala

SELECT SUM(blubber) as SUMME_MONAT FROM tabelle WHERE NOT IsNull(blubber) 

erstellen und die dann per UNION (wird von Access in der UI nicht unterstützt) über alle machen:

SELECT '01' as Monat, `2010' as Jahr, SUMME_MONAT FROM Abfrage_januar  
UNION
SELECT '02' as Monat, `2010' as Jahr, SUMME_MONAT FROM Abfrage_Februar  
UNION
SELECT '03' as Monat, `2010' as Jahr, SUMME_MONAT FROM Abfrage_Maerz  
usw...

Kann auch sein das jemand noch was einfacheres einfällt - Montags denk ich immer bischen kompliziert face-smile
Member: etnobommel1989
etnobommel1989 Mar 08, 2010 at 09:47:19 (UTC)
Goto Top
Die Idee mit der Tabelle wo alle Monate drin stehn ist sehr gut. Hab da jezz nur noch ein Problem. Und zwar wie kann ich also meinetwegen in der Tabelle stehn jetzt alle Beträge vom Januar und vom Februar. Wenn jetzt die Rechnung vom März kommt, wie kann ich diese Märzrechnung dann in die Tabelle Gesamt importieren.
Member: SlainteMhath
SlainteMhath Mar 08, 2010 at 09:51:13 (UTC)
Goto Top
Am besten mit einer "Anfügeabfrage" - da kannst Du dann zuordnen was in welches Feld importiert wird.
Member: etnobommel1989
etnobommel1989 Mar 08, 2010 at 10:43:27 (UTC)
Goto Top
Ja danke so klappt des einwandfrei.