[NEWSboard IBMi Forum]

Thema: SQL Problem

  1. #1
    Registriert seit
    Mar 2010
    Beiträge
    29

    Question SQL Problem

    Ich habe folgende Abfrage erstellt:
    Select T1.ARKDUN as Fzg ,T1.ARSN as SeNr, T2.ARRGW as Gewicht,T2.ARFB as Fracht , T3.ARNBB as Verpackung, T3.ARNBB as Nebenkosten
    From TM1DTA.AUHD0P as T1 left Join TM1DTA.AUS2BP as T2 on T1.ARSN = T2.ARSN left outer JOIN TM1DTA.AUS3NP as T3 on T1.ARSN = T3.ARSN And (NOT(T3.ARNBS = "SS")) And T3.ARTEIL IN ('V')
    where (T1.ARNL = 88) AND (T2.ARNL = 88) AND (T3.ARNL = 88) AND (T1.ARREL BETWEEN 699 AND 929) AND (T1.ARKDUN BETWEEN 42011 And 44015) AND (T2.ARTEIL = 'V') AND (T3.ARTEIL = 'V') AND (T1.ARDTAB = " & datvon & ")
    GROUP BY T1.ARSN,T1.ARKDUN,T2.ARRGW,T2.ARFB,T3.ARNBB
    ORDER BY T1.ARSN
    Nun kann der Spalte ARNBB mehrere Werte enthalten(Wert ist der Betragz.B. 5,00 Euro). Dieser ist abhängig von ARNBS in dem steht was es für ein Wert ist, also z.B. Nebenkosten oder Verpackungskosten...
    Jetzt möchte ich nur einen Datensatz für eine SENR. (Sendungsnummer) ausgegeben haben.
    Mehrere Werte in ARNBB ergeben aber mehrere Datensätze. Gibt es keine Möglichkeit die verschiedenen ARNBB hintereinander in einem Datensatz anzugeben? Also z.b.
    Select SeNr, ARNBB (where ARNBS="NB"),ARNBB (where ARNBS="VP")........ ?

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Probier mal mit zwei LEFT OUTER JOINs, einmal als T3V für die Verpackung und einmal als T3N für die Nebenkosten, jeweils ergänzt um die entsprechende Bedingung für ARNBS.

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo,

    du könntest das entweder in eine eigene Funktion verpacken oder mit Subselects arbeiten.

    Code:
    select 
     (select Tab2.spalte1 from Tabelle2 Tab2 
         where Tab2.Spalte2 = Tab1.Spalte1
         fetch first row only) as Spalte1_Tab2,
     Tab1.* from Tabelle1 Tab1

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wie immer gibts mehrere Möglichkeiten:

    select ...
    , (select sum(Wert) from tab1 b
    where a.key = b.key and b.field='1'
    ) Kosten1
    , (select sum(Wert) from tab1 b
    where a.key = b.key and b.field='2'
    ) Kosten2
    , ...
    from tab1 a
    where ...

    Ggf. ist der Subselect noch in coalesce zu verpacken, da es durchaus auch mal keine Werte geben kann und wenn man NULL nicht verarbeiten will:

    coalesce( (Subselect), 0) KostenX

    Da du auch noch Group By hast, ist der Subselect noch mal zu aggregieren:

    sum( coalesce( (Subselect), 0) ) KostenX
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2010
    Beiträge
    29

    Question Neues Problem

    Hab mit neuen left join die Tab ein 2. mal eingebunden. Aber nun werden Datrensätze die nur ARNBS=72 habne nicht mehr ausgegeben. Da ja die linke 'Seite der join Verbindung kein Ergebnis liefert(heist T3.ARNBS = 48 is False).

    From ((TM1DTA.AUHD0P as T1 left Join TM1DTA.AUS2BP as T2 on T1.ARSN = T2.ARSN) left JOIN TM1DTA.AUS3NP as T3 on T1.ARSN = T3.ARSN And T3.ARTEIL IN ('V')And T3.ARNBS = 48 ) left JOIN TM1DTA.AUS3NP as T4 on T1.ARSN = T4.ARSN And T4.ARNBS = 72 And T4.ARTEIL IN ('V')

    Ich möchte aber den Datensatz entweder mit ARNBS = 48 oder ARNBS = 72 ausgeben lassen. Ich hoffe ich drücke mich verständlich genug aus!?

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Da stimmt was mit der Klammerung nicht. Mach mal alle Klammern weg bis auf die bei den beiden INs.

  7. #7
    Registriert seit
    Mar 2010
    Beiträge
    29
    Auch ohne Klammern, werden keine Datensätze ausgegeben, in denen nur T4.ARNB vorkommt.

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Ist vielleicht in der restlichen Abfrage, also in der WHERE-Bedingung, noch irgendwo ein Bezug auf T3 oder T4?

  9. #9
    Registriert seit
    Mar 2010
    Beiträge
    29
    And T3.ARNBS = 48
    And T4.ARNBS = 72
    Diese Beschränkung habe ich im where probiert oder wie jetzt zu sehen als Bedingung im From... left join ....

  10. #10
    Registriert seit
    Mar 2010
    Beiträge
    29

    Unhappy Erklärung am Beispiel

    Bin am verzweifeln! Vielleicht eine andere Erklärung des Problems.

    Nr.|PersNr.|Name|Art |Betrag
    1 |1000 |Wer |Kosten |100
    2 |1001 |Wies |Erlöse |100
    3 |1000 |Wer |Erlöse |105
    4 |1001 |Wies |Kosten |99

    Also 1 Tab mit 4 Spalten.
    als Ausgabe sollten jetzt 2 Datensätze ausgegeben werden. Nämlich:
    "1000,Wer,100,105" und
    "1001,Wies,100,99"
    Nicht 4 Datensätze und auch nicht zusammengefasste Kosten und Erlöse.
    Wie bekomme ich das hin???

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Dieses Thema wurde schon öfters im Forum diskutiert.
    Da hilft nix anderes als Programmieren.
    In einer Schleife einlesen und Daten verarbeiten.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nr.|PersNr.|Name|Art |Betrag
    1 |1000 |Wer |Kosten |100
    2 |1001 |Wies |Erlöse |100
    3 |1000 |Wer |Erlöse |105
    4 |1001 |Wies |Kosten |99

    select PersNr, Name
    ,sum(select sum(Betrag) from Datei B where a.Persnr=b.persnr and b.Art='Kosten') Kosten
    ,sum(select sum(Betrag) from Datei C where a.Persnr=C.persnr and C.Art='Erlöse') Erloese
    from Datei A
    group by PersNr, Name
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. problem mit eigener sql function
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 26-05-06, 16:37
  2. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 15:57
  3. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  4. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38
  5. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •