[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2012
    Beiträge
    10

    SQL Anzahl wenn mehrer Felder gleich sind

    Hallo zusammen,

    folgende Anfrage würde ich gerne versuchen mit SQL zu lösen. Dies ist meine erste Anfrage hier in dem Forum also lasst bitte etwas Nachsicht walten lassen falls ich etwas vergessen habe, mich undeutlich ausdrücke... auch bin ich ein ziemlicher Neuling in Sachen DB2 / SQL (also super Vorraussetzungen)

    Beispiel :-)


    FELDA FELDB ZAEHLER
    4711 A 1
    4712 A 1
    4711 B 1
    4711 A 2
    4711 A 3
    4713 C 1


    => der ZAEHLER ist das Feld welches ich füllen möchte. In Abhängikeit von FELDA und FELDB.
    Wenn FELDA und FELDB gleich sind soll das Feld ZAEHLER hochzählen. Beginnend bei 1 und dann immer +1, je nachdem wie häufig FELDA und FELDB den gleichen Inhalt haben.


    Hoffe Ihr vertseht meine Frage UND könnt mir eine Funktion unter SQL nennen mit der ich das hinbekomme.
    Vielen Dank schonmal !!!

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

    ich würde mir ein RPG PGM schreiben, wo ich diese Tabelle sortiert nach FELDA, FELDB im Updatemodus einlese.
    Da kannst du dann in der Schleife prüfen ob die Werte gleich sind.
    Und dann den Zähler updaten.

    lg Andreas

  3. #3
    Registriert seit
    Oct 2012
    Beiträge
    10
    Danke für deine Antwort - ja mit RPG/CL weiß ich wie es geht.
    Würde das aber lieber mit einem SQL Statement erledigen, dachte vllt. gibts hierzu ne Funktion o.ä. ?

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Du kannst dir schon ein sehr komplexes SQL mit den Grouping Funktionen, Subselects u.ä. basteln.
    Ich fürchte nur, dass der Kosten/Nutzen-Faktor überhaupt nicht gegeben ist.

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Da gibts wohl ab V5R4 spezielle Funktionen, mit denen sowas möglich ist.

    SELECT FELDA, FELDB, ROW_NUMBER() OVER (PARTITION BY FELDA, FELDB ORDER BY FELDA) AS ROWNBR FROM Datei

  6. #6
    Registriert seit
    Oct 2012
    Beiträge
    10
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Du kannst dir schon ein sehr komplexes SQL mit den Grouping Funktionen, Subselects u.ä. basteln.
    Ich fürchte nur, dass der Kosten/Nutzen-Faktor überhaupt nicht gegeben ist.
    => nein das möchte ich nicht :-)
    hin und wieder muß ich solche zählungen halt 'on-the-fly' machen und da dachte ich geht es evtl. schneller, einfacher mit nem kleinen SQL.

  7. #7
    Registriert seit
    Oct 2012
    Beiträge
    10
    DAS ist es - vielen vielen dank herr pikachu !

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Das Ermitteln des Zählers ist mit den OLAP-Ranking-Funktionen, wie Pikachu gezeigt hat kein Problem. Allerdings benötigt man für den Update entweder einen Cursor oder wie Andreas gesagt hat ein komplexes SQL-Statement.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Oct 2012
    Beiträge
    10
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Das Ermitteln des Zählers ist mit den OLAP-Ranking-Funktionen, wie Pikachu gezeigt hat kein Problem. Allerdings benötigt man für den Update entweder einen Cursor oder wie Andreas gesagt hat ein komplexes SQL-Statement.

    Birgitta
    hallo brigitta,

    da hab ich mich wohl zu früh gefreut als der 'select' funktioniert hat.
    genau das problem mit dem update habe ich nämlich nun...
    was meinst du denn mit einem 'cursor' in bezug auf das sql statement?

    danke
    gruß
    michael

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... der Zähler ist bei der vorliegenden Aufgabenstellung vollkommen nutzlos, da die Reihenfolge der Sätze für SQL nicht festlegbar ist und demzufolge zufällig sein kann. Sind weitere Kriterien vorhanden, die eine Reihenfolge definieren, ist die Aufgabenstellung mit einem subselect elementar lösbar.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. nn Benutzer sind online
    By malzusrex in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 3
    Letzter Beitrag: 27-11-13, 15:47
  2. Nachricht wenn beendet (QRYPROD)
    By heynem in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 27-03-03, 12:14
  3. Antworten: 0
    Letzter Beitrag: 24-05-02, 12:20
  4. Beschränkung auf Anzahl Felder in Tabelle????
    By KB in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 10:56
  5. Spooleinträge gehen nach Freigabe gleich wieder auf HOLD
    By Matthias.Hayn in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 20-05-01, 16:36

Berechtigungen

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