[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte

Thema: sql problem

  1. #13
    Registriert seit
    Nov 2007
    Beiträge
    371
    ok dass das Datum jetzt zumindest
    6-stellig richtig kommt hab ich es so gemacht

    char(
    substr(digits(A.DATUM), 5, 2) concat
    substr(digits(a.datum) , 3, 2) concat
    substr(digits(a.datum) , 1, 2) ) as neu,



  2. #14
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Natürlich kannst du alles mit case abfragen.

    Um ein Datum zu erstellen, musst du ein Datumsformat übergeben, am besten eben ISO 'JJJJ-MM-TT'.

    z.B.:
    date(
    case when substr(digits(mydate), 5, 6)) < '70' then '20' else '19' end
    concat '-' concat substr(digits(mydate, 3, 2)) concat '-' concat substr(digits(mydate), 1, 2)))

    Mit Where-Bedingung wirds etwas kompliziert, da Ergebnisfelder zu diesem Zeitpunkt noch nicht exisitieren, der gesamte case-Ausdruck ist in diesem Fall also komplett zu wiederholen und dann auch abfragbar:

    where ... and case ... end = Wert

    Werden aber Felder aus Leftjoin abgefragt, macht man daraus schnell Innerjoin's, da man auch "is null" benötigt.

    where (leftjoinfiled is null or leftjoinfield = Wert) ...

    alternativ

    where coalesce(leftjoinfield, Defaultwert) = Wert

    Kombiniere dies dann nun auch noch mit case und die Übersichtlichkeit verbessert sich nicht gerade.

    Am einfachsten wirds dann aber mit CTE's:

    with
    mySelect as (fullselect)
    select * from mySelect
    where ErgField=Wert

    Durch "as (fullselect)" exisitieren nun die Ergebnisfelder.
    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. #15
    Registriert seit
    Nov 2007
    Beiträge
    371
    Sorry aber das muß ich jetzt los werden du bist mein Held .

    Funktioniert super.

    Das mit dem with as ist der Bringer.


    Ausserdem hab ich durch diesen ganzen Sums hier noch gelernt das man keine Sichten auf Programmbeschriebene Dateien machen kann.
    Hoffe diese Aussage stimmt.

    Vielen vielen dank nochmal!!!

  4. #16
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nun ja, auch das ist nur bedingt richtig.
    Solange die interne Datei keine gepackten Felder enthält ist das releativ einfach:

    select substr(satzfeld, 1, 10) as feld1, dec(substr(satzfeld, 11, 5), 5, 0) as numfeld ...
    from myfile

    Sind Zoned-Felder mit Vorzeichen darin, so kann man mittels case das Vorzeichen ja abfragen:

    dec(substr(satzfeld, pos, len-1) concat substr(hex(substr(satzfeld, pos+len-1, 1)), 2, 1), len, 0)
    *
    case substr(hex(substr(satzfeld, pos+len-1)), 1, 1)
    when 'D' then -1
    else 1 end)

    Für gepackte Felder:
    dec(substr(hex(substr(satzfed, pos, len), 1, len*2-1))
    *
    case substr(hex(substr(satzfeld, pos+len-1)), 2, 1)
    when 'D' then -1
    else 1 end)

    Benötigst du z.B. 2 Nachkomma, so musst du nur
    dec(....) / 100
    anhängen.

    usw. usw.
    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. #17
    Registriert seit
    Nov 2007
    Beiträge
    371
    also als ich die Sicht erstellen wollte kommt immer die Fehlermeldung 7 .
    Bei der Datei handelt es sich um eine Programmbeschreibene Datei.

    Ich hab die Datei mittels leftjoin und 5-stelliges AlphaFeld verbunden.

    Nun lese ich einen String der 700 stellen lang ist und in dem alles enthalten ist (gepackte,gezonte,usw) einen Alphastring aus.

    Verstehe ich das Richtig .

    Wenn auch nur 1 gepacktes Zeichen in diesem String vorkommt muß ich die letzte Variante deiners Vorschlages nehmen.

  6. #18
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist korrekt.
    Create VIEW funktioniert ggf. tatsächlich nicht, SQL aber ja.
    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

  7. #19
    Registriert seit
    Nov 2007
    Beiträge
    371
    Jetzt bin ich verwirrt.

    Also hatte ich doch recht das der Create View verwehrt bleibt oder??

    Da hilft mir auch nix wenn die SQL-Syntax (Also die Umwandlung der Werte )korrekt wäre.

  8. #20
    Registriert seit
    Nov 2007
    Beiträge
    371
    so nun noch eine Frage bevor ich ewig im dunklen tappe.

    Mein SQL Befehl

    insert into ....

    with fullselect as (

    .......
    .......
    .......
    .......
    .......
    )

    select from fullselect
    where ( soll flexibel sein)

    Also dieser ganze Sql Befehl soll abgesetzt werden wobei ich mir die where per Programm zusammenbauen muß.

    Jetzt meine Frage: Wie würdet ihr das wo
    und wie einbauen (Ich meine nicht die where bedingung ).

    Alles ins RPG schreiben oder was anderes??
    Teile davon auslagern?? Wenn ja wie??


    Mir würden ein Paar Tipps wie man das angeht wirklich weiterhelfen.
    Danke

  9. #21
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    im Prinzip gehört das was in dem with steht in eine View (deswegen sind Common Table Expressions eigentlich Schlunz)
    und auf Tables sollte man in der Applikation eh nicht zugreifen.

    D*B

    Zitat Zitat von woodstock99 Beitrag anzeigen
    so nun noch eine Frage bevor ich ewig im dunklen tappe.

    Mein SQL Befehl

    insert into ....

    with fullselect as (

    .......
    .......
    .......
    .......
    .......
    )

    select from fullselect
    where ( soll flexibel sein)

    Also dieser ganze Sql Befehl soll abgesetzt werden wobei ich mir die where per Programm zusammenbauen muß.

    Jetzt meine Frage: Wie würdet ihr das wo
    und wie einbauen (Ich meine nicht die where bedingung ).

    Alles ins RPG schreiben oder was anderes??
    Teile davon auslagern?? Wenn ja wie??


    Mir würden ein Paar Tipps wie man das angeht wirklich weiterhelfen.
    Danke
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #22
    Registriert seit
    Nov 2007
    Beiträge
    371
    Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!

  11. #23
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    das hat mit intern beschrieben nix zu tun, ob da jemand in einem Programm einen Alfa Bandwurm irgendwie zerlegt, das ist SQL Schnurz, da kann der nix von wissen.

    wie sind die Dateien erstellt, wie sieht dein create view aus und was für eine Fehlermeldung bekommst du genau?

    BTW: anfangen tut man mit Normalisierung! und dieser ganze intern beschriebene Kram ist nicht einmal in erster Normalform; wenn man halt auf so einem Datenkompost hockt, dann muss man das von der Basis her ändern, oder man kommt nie aus dem Sumpf heraus.

    D*B

    Zitat Zitat von woodstock99 Beitrag anzeigen
    Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #24
    Registriert seit
    Nov 2007
    Beiträge
    371
    ja da geb ich Dir recht , nur hier ist zu 80 % alles Programmbeschrieben deshalb tu ich mich auch so schwer.

    Fehlermeldung

    Nachricht . . . : KDSTAMM in QS36F für Operation ungültig.
    Ursache . . . . : Ursachencode ist 7. Ursachencodes:
    1 - KDSTAMM hat keine Teildateien.
    2 - KDSTAMM wurde mit freiem Speicherplatz gesichert.
    3 - KDSTAMM nicht im Journal aufgezeichnet, keine Berechtigung für Journal
    oder der Journalstatus ist *STANDBY. Dateien mit
    RI-Integritätsbedingungsaktion CASCADE, SET NULL od. SET DEFAULT müssen im
    selben Journal aufgezeichnet werden.
    4 und 5 - KDSTAMM in Prod.bibl. gespeichert/erstellt, aber Benutzer in
    Debug-Modus UPDPROD(*NO).
    6 - Schema wird erstellt, aber Benutzer in Debug-Modus UPDPROD(*NO).
    7 - Basistabelle zum Erstellen der Sicht ungültig. Tabelle ist
    programmbeschrieben oder befindet sich in einem temporären Schema.

    create view xxxx/auswahl as
    select
    b.rechnu , a.rechnr,
    date(
    case when substr(digits(a.datum), 5, 6) < '70' then '20' else '19'
    end concat substr(digits(a.datum), 5, 2) concat '-'
    concat substr(digits(a.datum), 3, 2) concat '-'
    concat substr(digits(a.datum), 1, 2)) as recdat,
    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 31, 9)) <> ' '
    then
    ltrim(substr(z.f00002 , 31, 9))
    else
    '123456789'
    end
    else
    case when ltrim(substr(y.anschri2, 1, 8)) <> ' '
    then
    ltrim(substr(y.anschri2, 1, 8))
    else
    '123456789'
    end
    end as POSTL,
    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 40, 20)) <> ' '
    then
    ltrim(substr(z.f00002 , 40, 20))
    else
    '*UNDEF'
    end
    else
    CASE when ltrim(substr(y.anschri2, 9, 26)) <> ' '
    then
    ltrim(substr(y.anschri2, 9, 26))
    else
    '*UNDEF'
    end
    end as ORTNA,

    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 5, 26)) <> ' '
    then
    ltrim(substr(z.f00002 , 5, 26))
    else
    '*UNDEF'
    end
    else
    case when ltrim(substr(x.anschri2, 1, 35))<> ' '
    then
    ltrim(substr(x.anschri2, 1, 35))
    else
    '*UNDEF'
    end
    end as NAMEN,
    a.kundennr as kunden , a.kdeinr,(ENDBETRAG-zahlung) as restbetrag,


    date(
    case when (digits(faelligtt)) concat (digits(faelligmm)) <>
    '3002'
    then
    case when (digits(faelligjj)) < '70' then '20' else '19' end
    concat (digits(Faelligjj)) concat '-'
    concat (digits(faelligmm)) concat '-'
    concat (digits(faelligtt))
    else
    case when (digits(faelligjj)) < '70' then '20' else '19' end
    concat (digits(Faelligjj)) concat '-'
    concat '03-01'
    end
    ) as faedat

    from qs36f/debisudl as a
    left outer join qs36f/KDSTAMM as Z on kundennr = z.k00001
    left outer join qs36f/debisudt as Y on a.rechnr = y.rechnr
    and y.umerkmal = '3'
    left outer join qs36f/debisudt as x on a.rechnr = x.rechnr
    and x.umerkmal = '1'
    left outer join xxx/debivodtu as b on a.rechnr = b.rechnr

    KDSTAMM Programm BESCHRIEBEN

    DSPFD-Befehlseingabe
    Datei . . . . . . . . . . . . . . . . . . . : FILE KDSTAMM
    Bibliothek . . . . . . . . . . . . . . . : QS36F
    Art der Information . . . . . . . . . . . . : TYPE *ALL
    Dateiattribute . . . . . . . . . . . . . . : FILEATR *ALL
    System . . . . . . . . . . . . . . . . . . : SYSTEM *LCL
    Kopfzeile der Dateibeschreibung
    Datei . . . . . . . . . . . . . . . . . . . : FILE KDSTAMM
    Bibliothek . . . . . . . . . . . . . . . . : QS36F
    Dateiart . . . . . . . . . . . . . . . . . : Physisch
    Dateiart . . . . . . . . . . . . . . . . . : FILETYPE *DATA
    Zusatzspeicherpool-ID . . . . . . . . . . . : 00001
    Datenbankdateiattribute
    Extern beschriebene Datei . . . . . . . . . : Nein
    Dateiebenen-ID . . . . . . . . . . . . . . : 0921203095800
    Erstellungsdatum . . . . . . . . . . . . . : 03.12.92
    Text 'Beschreibung' . . . . . . . . . . . . : TEXT
    Verteilte Datei . . . . . . . . . . . . . . : Nein
    Partitionierte SQL-Tabelle . . . . . . . . : Nein
    DBCS-fähig . . . . . . . . . . . . . . . . : Nein
    Maximale Anzahl Teildateien . . . . . . . . : MAXMBRS *NOMAX
    Anzahl der Integritätsbedingungen . . . . . : 0
    Anzahl der Auslöser . . . . . . . . . . . . : 0
    Anzahl der Teildateien . . . . . . . . . . : 1
    Wartung des Zugriffspfads . . . . . . . . . : MAINT *IMMED
    Wiederanlauf des Zugriffspfads . . . . . . : RECOVER *NO
    Erzwungener Zugriffspfad . . . . . . . . . : FRCACCPTH *NO
    Größe der Teildatei SIZE
    Ursprüngliche Anzahl Datensätze . . . . . : 100000
    Satzanzahl für Erweiterung . . . . . . . : 32767
    Maximale Anzahl Erweiterungen . . . . . . : 508
    Datensatzkapazität . . . . . . . . . . . . : 16745636
    Speicher zuordnen . . . . . . . . . . . . . : ALLOCATE *NO
    Zusammenhängender Speicherplatz . . . . . . : CONTIG *NO
    Bevorzugte Speichereinheit . . . . . . . . : UNIT *ANY
    Sätze für erzwungenes Schreiben . . . . . . : FRCRATIO *NONE
    Maximale Dateiwartezeit . . . . . . . . . . : WAITFILE *CLS
    Maximale Satzwartezeit . . . . . . . . . . : WAITRCD *NOMAX
    Max % gelöschter Sätze zulässig . . . . . . : DLTPCT *NONE
    Gelöschte Sätze wiederverwenden . . . . . . : REUSEDLT *NO
    ID des codierten Zeichensatzes . . . . . . : CCSID 65535
    Lesen zulässig . . . . . . . . . . . . . . : Ja
    Schreiben zulässig . . . . . . . . . . . . : Ja
    Fortschreiben zulässig . . . . . . . . . . : ALWUPD *YES
    Löschen zulässig . . . . . . . . . . . . . : ALWDLT *YES
    Satzformat-Aktualitätsprüfung . . . . . . . : LVLCHK *NO
    Zugriffspfad . . . . . . . . . . . . . . . : Geschlüsselt
    Größe des Zugriffspfads . . . . . . . . . . : ACCPTHSIZ *MAX4GB
    Maximale Schlüssellänge . . . . . . . . . . : 5
    Maximale Satzlänge . . . . . . . . . . . . : 800
    Flüchtig . . . . . . . . . . . . . . . . . : Nein
    Datei wird derzeit aufgezeichnet . . . . . : Nein
    Zugriffspfadbeschreibung
    Wartung des Zugriffspfads . . . . . . . . . : MAINT *IMMED
    Eindeutige Schlüsselwerte erforderlich . . : UNIQUE Ja
    Zugriffspad aufgezeichnet . . . . . . . . . : Nein
    Zugriffspfad . . . . . . . . . . . . . . . : Geschlüsselt
    Integritätsart . . . . . . . . . . . . . . : NONE
    Anzahl der Schlüsselfelder . . . . . . . . : 1
    Satzformat . . . . . . . . . . . . . . . . : R.KDSTRE
    Schlüsselfelder . . . . . . . . . . . . . : K00001
    Reihenfolge . . . . . . . . . . . . . . : Aufsteigend
    Vorzeichen angegeben . . . . . . . . . : UNSIGNED
    Zone/Ziffer angegeben . . . . . . . . . : *NONE
    Alternative Sortierfolge . . . . . . . : Nein
    Sortierfolge . . . . . . . . . . . . . . . : SRTSEQ *HEX
    Sprachen-ID . . . . . . . . . . . . . . . . : LANGID DEU
    Teildateibeschreibung
    Teildatei . . . . . . . . . . . . . . . . . : MBR M921203
    Teildateiebenen-ID . . . . . . . . . . . : 0921203095801
    Erstellungsdatum der Teildatei . . . . . : 03.12.92
    Text 'Beschreibung' . . . . . . . . . . . : TEXT
    Verfallsdatum der Teildatei . . . . . . . : EXPDATE *NONE
    Wartung des Zugriffspfads . . . . . . . . : MAINT *IMMED
    Wiederherstellung des Zugriffspfads . . . : RECOVER *NO
    Größe der Teildatei SIZE
    Anfangsanzahl der Sätze . . . . . . . . : 100000
    Satzanzahl für Erweiterung . . . . . . : 32767
    Maximale Anzahl Erweiterungen . . . . . : 508
    Aktuelle Anzahl Erweiterungen . . . . . . : 0
    Satzkapazität . . . . . . . . . . . . . . : 16745636
    Aktuelle Anzahl Sätze . . . . . . . . . . : 4897
    Anzahl gelöschter Sätze . . . . . . . . . : 0
    Speicher zuordnen . . . . . . . . . . . . : ALLOCATE *NO
    Zusammenhängender Speicher . . . . . . . : CONTIG *NO
    Bevorzugte Speichereinheit . . . . . . . : UNIT *ANY
    Sätze für erzwungenes Schreiben . . . . . : FRCRATIO *NONE
    Offenen Datenpfad gemeinsam benutzen . . : SHARE *NO
    Max % gelöschte Sätze zulässig . . . . . : DLTPCT *NONE
    Anzahl der Teildateizugriffe . . . . . . : 0
    Aktivitätsstatistik für Datenbereich . . :
    Datenbereichsgröße in Byte . . . . . . : 3944448
    Zugriffe zum Öffnen der phys. Datei . . : 4.303
    Zugriffe zum Schließen der phys. Datei : 4.121
    Zugriffspfad gültig . . . . . . . . . . : Ja
    Impl. gemeinsame Ben. des Zugriffspfads : Nein
    Satzformatliste
    Satz- Fmt.Ebenen-
    Format Felder Länge ID
    R.KDSTRE 3 800 26304ABE995DF
    Text . . . . . . . . . . . . . . . . . . . :
    Gesamtanzahl Formate . . . . . . . . . . . . : 1
    Gesamtanzahl Felder . . . . . . . . . . . . : 3
    Gesamtlänge Datensatz . . . . . . . . . . . : 800
    Teildateiliste
    Quell. Erstell. Letzte Änderung Gelöschte
    Teildatei Größe Art Datum Datum Uhrzeit Sätze Sätze
    M921203 4071424 03.12.92 18.06.08 11:04:50 4897 0
    Text:
    Gesamtzahl an Teildateien . . . . . . . . : 1
    Gesamtzahl nicht verfügbarer Teildateien . : 0

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
  •