-
Mittels SUBSTR solltest du eigentlich einen Teil herausbekommen.
Allerdings ist die Funktion auf 1Mb beschränkt und arbeitet nicht "distinct".
Solltest du also doch mehr Werte haben, liegts nicht am substring sondern an der Verkettung.
Ggf. also vorher per DISTINCT auf eindeutige Werte reduzieren.
Das Ergebnis des sys_connect_by_path kannst du auch vorher casten:
cast(sys_connect_by_path(...) as varchar(nn)) as Text
Siehe auch hier:
http://publib.boulder.ibm.com/infoce...61%74%68%22%20
-
Danke,
aber ...
das geht leider auch nicht
hier mal mein Befehl
Code:
With x as (Select Row_Number() over(Order By kkmanr, rrn(a)) as seq,
a.* from ankkop a where kkmanr = 38),
y as (Select kkmanr, cast(char(sys_connect_by_path(
Trim(digits(KKLFDN)), ' ')) as varchar(10000)) as Text
from x
Start With kkmanr = 38 and seq = 1
connect by Prior Seq = Seq - 1)
Select kkmanr, Max(Text) as Text
From y
Group By kkmanr
Die Datei hat 6 Sätze mit kkmanr = 38, kklfdn ist 7P 0 definiert
Sql sagt: "Ergebnis zu lang"
-
Schau mal deinen SQL genau an, da ist ein cast zu viel drin!
Lass mal char(......) weg!
Die Funktion CHAR versucht nämlich einen CAST(... as char(1000000)) und das ist natürlich zu lang!
PS:
Auch der TRIM bei Digits ist unsinnig, da Digits keine Leerzeichen zurückgibt.
-
Der Hammer, es funktioniert!
Danke!!!!!!
Wenn das jetzt noch jemand erklären könnte ...
ok mit dem 1. With wird eine Arbeitsdatei erstellt, die ...
ok ich versuch mal das SQL Buch zu interwiewen.
Verstanden hab ich es nicht, aber es geht ... Klasse!!
Der glückliche ILEMax
-
Weiteres siehst du hier:
hierarchical queries
-
Hier ist auch noch ein Artikel zu dem Thema Hierarchische Queries:
Hierarchical Queries with DB2 Connect By
Birgitta
-
ich muß diese tolle sache nochmal aufwärmen.
Während
Code:
With x as (Select Row_Number() over(Order By kkmanr, rrn(a)) as seq,
a.* from ankkop a where kkmanr = 38),
y as (Select kkmanr, cast((sys_connect_by_path(
Trim(digits(KKLFDN)), ' ')) as varchar(10000)) as Text
from x
Start With kkmanr = 38 and seq = 1
connect by Prior Seq = Seq - 1)
Select kkmanr, Max(Text) as Text
From y
Group By kkmanr
toll funktioniert, habe ich versucht
mehrere kkmanr's zu selektieren.
Code:
With x as (Select Row_Number()
over(Order By kkmanr, rrn(a)) as seq,
a.* from ankkop a where kkmanr between 38 and 50),
y as (Select kkmanr, cast((sys_connect_by_path(
Trim(digits(KKLFDN)), ' ')) as varchar(20000)) as Text
from x
Start With kkmanr = 38 and seq = 1
connect by Prior Seq = Seq - 1)
Select kkmanr, Max(Text) as Text
From y
Group By kkmanr order by 1
im Ergebnis bekomme ich mit kkmanr = 38 das richtige Ergebnis. (5 Nr.)
mit kkmanr 39 aber das von 38 und von 39. (also 7 statt 2 Nr.)
Wenn ich den Start with in der seq verändere, z.B. auf 6, bekomme ich
keine Zeile 38 aber die 39 startet richtig.
Wie kann ich nun das SQL so umbauen, das ich nur die Nr. zu einer kkmanr bekomme, die dazu gehören?
Danke
Der ILEMax
-
versuch mal das für dich um zu bauen
Code:
With x as (Select Row_Number() over(partition
By adadnr, adadn2
) as seq,
a.* from adresp a where (adadnr, adadn2) in(
select susunr, susun2 from schulp where susunr between 5 and 99)),
y as (Select adadnr, adadn2, cast((sys_connect_by_path(
Trim(digits(adadn3)), ' ')) as varchar(10000)) as Text
from x
Start With seq = 1
connect by Prior Seq = Seq - 1 and
Prior adadnr = adadnr and
Prior adadn2 = adadn2 )
Select adadnr, adadn2, max(Text) as Text
From y
group By adadnr, adadn2
Benötige aber auch nen Tip:
Wenn ich das in ein create view packe, bekomme ich einen SQL System fehler
Hat da jemand eine Idee?
Danke
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Danke Robi, damit konnte ich mein Prob. lösen.
Aber auch ich bekomme einen SQL-Systemfehler wenn ich ein create View mache (V7R1, alle PTF's)
Dann kann ich damit nix anfangen
Gibt es eine andere Lösung?
Eine, die im Create View funktioniert?
Danke
Der ILEMax
-
Wie wärs dann mit einer Fehlermeldung an IBM?
Vielleicht wird sys_connect_by_path in einer View nicht unterstützt?
-
Auch Umschreiben bringt nichts!
Sieht nach CALL bei IBM aus
... allerdings
Versuch mal die erste CTE als View zu generieren und diese dann in der 2. View zu verwenden.
Code:
Create View MyLib/MyView1
as (Select Row_Number() over(partition
By adadnr, adadn2) as seq,
a.*
from adresp a Join schulp b on adadnr = susunr and adadn2 = susun2
where susunr between 5 and 99);
Code:
Create View MyLib/MyView2
as With y as (Select adadnr, adadn2,
cast((sys_connect_by_path(Trim(digits(adadn3)), ' '))
as varchar(10000)) as Text
from MyView1
Start With seq = 1
connect by Prior Seq = Seq - 1 and
Prior adadnr = adadnr and
Prior adadn2 = adadn2 )
Select adadnr, adadn2, max(Text) as Text
From y
group By adadnr, adadn2;
Birgitta
-
Hi,
Meldung bei IBM läuft, geht wohl nach USA.
Melde mich wenn erg da ist.
@Birgitta, ich versuchs, wenn ich das nächste mal beim Kunden bin.
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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