Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Null-Wert bei Abfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Cr4m0, 13 Juli 2017.

  1. Cr4m0

    Cr4m0 Benutzer

    Moin,

    ich habe folgende Abfrage geschrieben:

    select CONVERT(NVARCHAR, A.Anlagedatum, 104) as Datum,
    count(DISTINCT A.Vertriebsbeleg) as Anzahl_Auftraege ,
    CAST(sum(A.Nettowertohnefrachtkosten) as money) as Auftragswert,
    W.Temperatur,
    W.Feuchtigkeit,
    W.Windgeschwindigkeit,
    W.Niederschlag,
    W.Bewoelkung,
    W.Event
    from tabelle.Auftraege A,
    tabelle.wetterdaten W,
    tabelle.Kundenstamm K
    where A.Anlagedatum = W.Datum
    and K.Kunde =A.Kunde
    and A.KundenartMarketing = 'mk'
    and A.Verkaufsorganisation = '1000'
    and YEAR(A.Anlagedatum) = 2013 -- !!!
    and W.Standort = 'Düsseldorf'
    and K.Bundesland in ('Nordrhein Westfalen','Hessen','Rheinland Pfalz','Saarland')
    group by A.Anlagedatum,W.Temperatur,W.Feuchtigkeit,W.Windgeschwindigkeit,W.Niederschlag,W.Bewoelkung,W.Event
    order by A.Anlagedatum;

    Wenn es für ein Datum nun keine Aufträge gibt, dann bekomme ich für das jeweilige Datum kein Ergebnis geliefert. Das wird dann mühsam beim Auswerten. Kann mir jemand sagen wie ich das Problem lösen kann?
     
  2. MDDaniel

    MDDaniel Benutzer

    Wenn es für ein Datum keine Aufträge gibt kannst du kein Ergebnis bekommen. Warum stellt das ein Problem dar?
    Die Kurve krieg ich nicht.
    Wenn es nur darum geht das undatierte Aufträge in einer Statistik fehlen kannst du ein default-Datum einsetzen.

    Stichwort: COALESCE() (besonders beim where Kriterium) oder ISNULL()
     
  3. Cr4m0

    Cr4m0 Benutzer

    Ja das ist richtig. Da es aber für jedes Datum Wetterdaten gibt, möchte ich das die Wetterdaten ausgegeben werden und für die Anzahl der Aufträge "0" ausgegeben wird.
     
  4. Cr4m0

    Cr4m0 Benutzer

    Ich habe nun folgendes Statement geschrieben:

    select CONVERT(NVARCHAR, W.Datum, 104) as Datum,
    ISNULL(count(DISTINCT A.Vertriebsbeleg),0) as Anzahl_Auftraege ,
    ISNULL(CAST(sum(A.Nettowertohnefrachtkosten) as money),0) as Auftragswert,
    W.Temperatur,
    W.Feuchtigkeit,
    W.Windgeschwindigkeit,
    W.Niederschlag,
    W.Bewoelkung,
    W.Event
    from tabelle.Auftraege A,
    tabelle.wetterdaten W,
    tabelle.Kundenstamm K
    where A.Anlagedatum = W.Datum
    and K.Kunde =A.Kunde
    and A.KundenartMarketing = 'mk'
    and A.Verkaufsorganisation = '1000'
    and YEAR(A.Anlagedatum) = 2013 -- !!!
    and W.Standort = 'Düsseldorf'
    and K.Bundesland in ('Nordrhein Westfalen','Hessen','Rheinland Pfalz','Saarland')
    group by W.Datum,W.Temperatur,W.Feuchtigkeit,W.Windgeschwindigkeit,W.Niederschlag,W.Bewoelkung,W.Event
    order by W.Datum;

    Leider bekomme ich für die Wetterdaten ohne Aufträge immernoch keine Daten.
     
  5. ukulele

    ukulele Datenbank-Guru

    Du solltest unbedingt mit expliziten Joins arbeiten und nicht einfach alle Tabellen zusammen pappen. Dann könntest du z.B. auch die Aufträge auf die Wetterdaten joinen, das könnte dein Problem lösen.
    Code:
    SELECT   CONVERT(NVARCHAR, A.Anlagedatum, 104) as Datum,
         count(DISTINCT A.Vertriebsbeleg) as Anzahl_Auftraege,
         CAST(sum(A.Nettowertohnefrachtkosten) as money) as Auftragswert,
         W.Temperatur,
         W.Feuchtigkeit,
         W.Windgeschwindigkeit,
         W.Niederschlag,
         W.Bewoelkung,
         W.[Event]
    FROM   tabelle.wetterdaten W
    LEFT JOIN tabelle.Auftraege A
    ON     W.Datum = A.Anlagedatum
    LEFT JOIN tabelle.Kundenstamm K
    ON     A.Kunde = K.Kunde
    WHERE   A.KundenartMarketing = 'mk'
    and A.Verkaufsorganisation = '1000'
    and YEAR(A.Anlagedatum) = 2013 -- !!!
    and W.Standort = 'Düsseldorf'
    and K.Bundesland in ('Nordrhein Westfalen','Hessen','Rheinland Pfalz','Saarland')
    group by A.Anlagedatum,W.Temperatur,W.Feuchtigkeit,W.Windgeschwindigkeit,W.Niederschlag,W.Bewoelkung,W.[Event]
    order by A.Anlagedatum;
    Ohne Beispieldatensätze läßt sich aber nicht so genau sagen was raus kommt, die Richtung sollte stimmen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden