-
SQL Ergebniskette
Hi *all
geht das mit SQL ?
Datei
Code:
NR Name Zahl
10 Hugo 1
10 Fritz 2
10 Günter 1
20 Willi 1
Select "Wie auch immer" from datei where Nr = 10
Ergebnis
Hugo, Fritz, Günter In EINEM String
Danke
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Ja, mit rekursievem CTE .
-
Baldur
Du antwortest doch sonst nicht nach dem Motto:
'Wissen sie wie spät es ist? ja"
With a as select 'der erste name' from datei where nr = 10,
b as select 'der nächste name' ...
select a.Name concat b.name ... form a, b, ...
DAS geht nicht
Rekursive CTE ? schrei: Birgitta!
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Es gibt 3 Möglichkeiten:
1. Rekursive CTE
2. Hierachische Query Anweisung
3. Handgestrickte UDF
@1: RCTE
Code:
with x as (SELECT ROW_NUMBER() over(partition by Key ORDER BY rrn(a)) Seq,
a.*
FROM mytable a),
Rec (Key, Value, Seq)
as ( select Key, x.Value, seq from x where Seq = 1
union all
select x.Key, x.Value concat ' ' concat Rec.Value,
Rec.Seq + 1
from x join Rec on x.Key = Rec.Key and x.Seq = Rec.seq + 1),
y as (select Key, Max(Seq) Seq from Rec group by Key)
select rec.Key, Value
from rec join y Using (Key, Seq )
@2: Hierarchische Query Anweisung (PTF TR3 7.1)
Code:
With x as (Select Row_Number() over(Order By Key, rrn(a)) seq, a.*
from mytable a),
y as (Select Key, sys_connect_by_path(Trim(Value), ' ') Text
from x
Start With Key = 1 and seq = 1
connect by Prior Seq = Seq - 1)
Select Key, Max(Text) Text
From y
Group By Key;
@3: UTF
Habe ich gerade keine, aber der Key wird als Parameter übergeben und dann wird die Datei über Cursor für den Schlüssel-Wert verarbeitet und mit jedem Satz der aktuelle Wert zu dem Ausgabe-Feld hinzugefügt.
Birgitta
-
Zur hierarchischen Abfrabe habe ich auch ein Beispiel falls es dir weiter hilft:
Code:
NR SUCH
1.000 Wandfarbe
1.000 Dispersion
2.000 Lack
2.000 Kunstharz
1.000 Bla Bla
1.000 Noch was
Code:
Select Tree From
(
select level , sys_connect_by_path (such, ' ') tree
From
(
Select 0 nr2, ' ' such , -1 root from sysibm/sysdummy1
union
Select nr2, such, nr2 - 1 root from
(Select row_number() over (order by nr) nr2, such from pranlib/t1
where nr = 1000 ) t3
) t2
connect by prior root = nr2
) t1
order by level desc
fetch first row only ;
Code:
Noch was Bla Bla Dispersion Wandfarbe
Allerdings ist hierfür die Bedingung WHERE NR = 1000 wichtig!
Jedoch ist die RRN dafür egal.
lg Andreas
-
Birgitta vielen Dank
Wie immer, schnell und kompetent
Andreas,
auch dir sei gedankt
@alle
Die hirachische Abfrage sieht am 'Einfachsten' aus
Wie kann ich feststellen on der Kunde TR3 hat?
Ist das bei regelmäßiger PTF Einspielung automatisch so (z.zt. aktuell ist ja schon TR5)
Oder muß das seperat geordert werden (wie)
Danke
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Eigentlich sollten die hierarchischen Query-Anweisungen mit dem aktuellen Release-Stand in Release 7.1 vorhanden sein.
(Die RCTE gehen halt auch schon unter V5R4)
Birgitta
-
Hi,
das finde ich SUUUUPER Interessant.
nur verstehen tuh ich das nicht
Ich habe nun bei mir
Code:
With x as (Select Row_Number() over(Order By kkmanr, rrn(a)) as seq,
a.* from ankkop a where kkmanr = 1082),
y as (Select kkmanr, sys_connect_by_path(Trim(digits(KKLFDN)), ' ') as Text
from x
Start With kkmanr = 1082 and seq = 1
connect by Prior Seq = Seq - 1)
Select kkmanr, Max(Text) Text
From y
Group By kkmanr
um alle kklfdn hintereinander zu bekommen, die der kkmanr= 1082 hat.
das Ergebnis ist aber
Code:
MANDANTEN-NR TEXT
1.082 *POINTER
Was mach ich falsch?
Danke
der ILEMax
-
Du verwendest STRSQL!
Das Ergebnis aus sys_connect_by_path() ist ein Large Object. Large Objects können nur mit System-i-Navigator angezeigt werden. Anderenfalls must Du das Ergebnis in CHAR oder VARCHAR umwandeln.
Birgitta
-
ich hab das
Code:
sys_connect_by_path(Trim(digits(KKLFDN)), ' ') as Text
geändert in
Code:
char(sys_connect_by_path(Trim(digits(KKLFDN)), ' ')) as Text
und bekomme
als Meldung, (auch bei varchar)
obwohl nur 3 Werte a 7 byte vorhanden sind
ILEMax
-
Probiere es mit TRIM oder im schlechtesten Fall mit SUBSTRING.
lg Andreas
-
nö, immer 'Ergebnis zu lang'
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