-
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.
-
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!!!
-
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.
-
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.
-
Das ist korrekt.
Create VIEW funktioniert ggf. tatsächlich nicht, SQL aber ja.
-
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.
-
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
-
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 von woodstock99
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
-
Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!
-
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 von woodstock99
Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind  und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!
-
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
-
By Stefan_Sk in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 26-05-06, 16:37
-
By Lucky4712 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-05-06, 15:57
-
By cbe in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-06-05, 16:21
-
By itec01 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 16-09-04, 18:38
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks