[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121

    Frage an die SQL-Profis

    Hallo Gemeinde,

    ich hätte da mal eine Frage, ob man folgendes Problem elegant mit einem SQL lösen kann.

    Ich habe eine Tabelle mit 3 Key-Felder und ein Von- und Bis-Wert. (Die restlichen Felder des Satzes sind bei gleiche Key immer identisch, deshalb lass ich die hier mal weg)

    In der Tabelle gibt es bei gleichen Key mehrer Sätze, wo ein Satz mit einem VON-Wert beginnt, der dem Satz davor dem BIS-Wert + 1 entspricht. Wenn das der Fall ist, so möchte ich aus diesen 2 (Oder auch mehr) Sätzen einen machen, wo der VON-Wert = dem VON-Wert des ersten Satzes und der BIS-Wert gleich dem BIS-Wert des letzten Satzes ist.

    Ausgang:
    PHP-Code:
    Key1    Key2    Key3    von        bis
    1        1        1        10001    10005
    1        1        1        10006    10010
    1        1        2        10011    10015
    1        1        1        10016    10020
    1        1        1        10021    10030
    1        1        1        10031    10057 
    Und so sollte das Ziel aussehen
    PHP-Code:
    Key1    Key2    Key3    von        bis
    1        1        1        10001    10010
    1        1        2        10011    10015
    1        1        1        10016    10057 
    Ist das überhaupt mit SQL möglich?

    Liebe Grüße
    Ronald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Schau dir da mal die OLAP-Funktionen an.
    Hier kannst du ggf. mit Min/Max und Partition order by zum gewünschten Ergebnis auf dem Einzelsatz kommen.
    Dieses gruppierst du dann wieder über die Schlüssel mit den Min/Max auf das errechnete obige Ergebnis.
    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

  3. #3
    GerhardG Besucher/Guest
    Hallo,
    so sollte es auch gehen:

    PHP-Code:
    with data (Key1Key2Key3vonbis) as (values
    (1111000110005),
    (
    1111000610010),
    (
    1121001110015),
    (
    1111001610020),
    (
    1111002110030),
    (
    1111003110057)
    ),
         
    sort (Key1Key2Key3vonbisrn) as (
    select key1
           
    key2
           
    key3
           
    von
           
    bis,
           
    row_number() over (order by key1,key2,key3)
    from   data
    ),
         
    gruppen (crngrp_Key1grp_Key2grp_Key3grp_vongrp_bisgruppe) as (
    select rn
           
    key1
           
    key2
           
    key3
           
    von
           
    bis
           
    1
    from   sort
    where  rn 
    1
    union  all
    select rn

           
    key1
           
    key2
           
    key3
           case 
    when (key1key2key3) <> (grp_key1grp_key2grp_key3then von 
                when von 
    grp_bis 1 then von 
                
    else grp_von
           end
    ,
           
    bis,
           case 
    when (key1key2key3) <> (grp_key1grp_key2grp_key3then gruppe 
                when von 
    grp_bis 1 then gruppe 1
                
    else gruppe
           end
    from   gruppen
    inner  join sort on crn 
    rn
    )

    select grp_key1,
           
    grp_key2,
           
    grp_key3,
           
    min(grp_von),
           
    max(grp_bis)
    from   gruppen
    group  by grp_key1
    ,grp_key2,grp_key3,gruppe
    order  by min
    (grp_von)

    1    1    1    10001    10010
    1    1    2    10011    10015
    1    1    1    10016    10057 

Similar Threads

  1. Für Profis sind die Antworten kein Problem :-)
    By croma62 in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 18-07-17, 15:37
  2. SQL Frage
    By a.wojcik in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-01-16, 12:29
  3. SQL-Frage
    By jgv in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-11-13, 14:41
  4. SQL Frage
    By Franz.Rung in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-11-13, 15:32
  5. für SQL Profis: Preisliste runden mit SQL
    By hs in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 30-01-02, 11:37

Berechtigungen

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