[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von Fuerchau Beitrag anzeigen
    EXCEPTION JOIN PERP ON LEVEL = PENR and FINR = 'x'
    Für was steht 'x'?
    Finr sind bei uns 3-stellig.
    Wenn ich ein Join auf eine logische Datei die den Key PENR hat und unique ist, würde das funktionieren?

    @ExAzubi: Mit Group by habe ich es funktioniert, hat aber nicht das gewünschte Ergebnis gebracht.

  2. #2
    Registriert seit
    Apr 2019
    Beiträge
    43
    Kommt auch etwas Schlankes in Frage?
    Code:
    SELECT min(a.penr)+1 
    from PERP a                                       
    left outer join PERP 
    b on a.penr  = b.penr +1 
    where b.penr is null
    mit FINR im unique key
    Code:
    SELECT min(a.penr)+1 
    from PERP a                                       
    left outer join PERP 
    b on a.penr  = b.penr +1 and a.finr = b.finr
    where b.penr is null and a.finr = '001'

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie ist dann diese Frage zu verstehen?

    "Wie verknüpfe ich diese Abfrage mit einem zusätzlichen Key (FINR)?"

    Wenn die PENR bereits unique ist, wozu brauchst du die FINR?
    Oder ist die PENR nur incl. FINR unique?
    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

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    Ich habe die Personaldatei die hat den Key FINR/PENR und ist unique.

    Dann gibt es eine Logische die den Key PENR hat und auch unique ist.

  5. #5
    Registriert seit
    Apr 2019
    Beiträge
    43
    Wenn FINR und PENR unique keys sind, dann ist natürlich der left outer join mit zusätzlich der FINR wichtig.

  6. #6
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke für eure Hilfe und Input.

    Ich habe es nun wie folgt gelöst:

    Code:
    WITH LFDNBR (LEVEL)                          
        AS  (VALUES(10000)                       
            UNION ALL                            
            SELECT LEVEL + 1 FROM LFDNBR         
            WHERE LEVEL < 99999)                 
    SELECT IFNULL(LEVEL, 0)                      
    FROM LFDNBR                                  
    WHERE LEVEL NOT IN (SELECT PENR FROM PERP)   
    EXCEPTION JOIN PERP ON LEVEL = PENR          
    ORDER BY LEVEL                               
    FETCH FIRST ROWS ONLY
    lg

  7. #7
    Registriert seit
    Apr 2012
    Beiträge
    360
    Mit dieser Statement habe ich eigentlich angefangen, aber die Nummern von 10475 bis 12000 sind frei und er leifert mir den wert 12002 zurück.
    Code:
    SELECT min(a.penr) + 1 
    FROM PERP a 
    left outer join PERP b 
    on a.penr = b.penr + 1 
    WHERE b.penr is null 
      and a.penr > 10000

Similar Threads

  1. Freie Kapazität
    By AKS1 in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 22-04-18, 15:19
  2. C9002A95 System hängt auf der Nummer
    By Mida in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 09-02-18, 22:18
  3. demnächst freie Kapazitäten
    By Robi in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 17-01-18, 09:08
  4. Antworten: 1
    Letzter Beitrag: 16-05-17, 08:47
  5. laufende Nummer in DB mit SQL aktualisieren
    By XMan in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 05-03-14, 09:54

Berechtigungen

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