Eh, messed up and didn't see it until I sent it. That's not going to give
you the main record you want. I added a DESC parameter to my sort, as
Denis had done. That might do it.
From: Darren Strong <darren@xxxxxxxxx>
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Date: 05/18/2016 11:00 AM
Subject: RE: SQL statement to read previous records
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxx>
Denis has it. I'll fix up the syntax a bit and add a join to bring the
data together with MFLD columns for the main columns, and ATR columns for
the attribute columns. You could also use a subselect if you're only
bringing in one column from the main table. I didn't test any of this...
select a.ATR1, a.ATR2,b.MFLD1, b.MFLD2
from FileX a
where a.RcdTyp='ATTRIBUTE'
left outer join lateral
(select MFLD1, MFLD2
from FileX b
where RRN(b)<RRN(a)
and RcdTyp='MAIN'
order by RRN(B) desc
fetch first row only) B
on 1=1
Alternative as subselect:
select a.ATR1, a.ATR2,
(select MFLD1 from FileX b
where RRN(b)<RRN(a)
and RcdTyp='MAIN'
order by RRN(b) desc
fetch first row only)
from FileX a
where a.RcdTyp='ATTRIBUTE'
From: Denis Robitaille <denis_robitaille@xxxxxxxxxxxx>
To: Midrange Systems Technical Discussion
<midrange-l@xxxxxxxxxxxx>
Date: 05/18/2016 09:48 AM
Subject: RE: SQL statement to read previous records
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxx>
There is a way to get the RRN (relative record number) of the attribute
record
SELECT field1, field2, RRN(myfile)
FROM myfile
WHERE .....
You now have the RRN of the attribute record
Next you can fetch the previous record(s) that is a main record
SELECT field1, Field2
FROM myfile
WHERE type='main record test' and RRN(myfile) < :RRN_attribute_record
ORDER desc BY RRN(myfile)
Select first row only
I am not sure of the syntax but you should get the idea
PS Better be sure of 2 things: The file is configured not to reuse deleted
records. You never do a reorg of the file
Hope this help
Denis Robitaille
Chef de service TI - Solution Entreprise
Infrastructure et Opérations
Cascades Centre des technologies,
412 Marie Victorin
Kingsey falls(Québec) Canada J0A 1B0
T : 819 363 6130
-----Message d'origine-----
De : MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] De la part de Bill
Howie
Envoyé : 18 mai 2016 08:52
À : midrange-l@xxxxxxxxxxxx
Objet : SQL statement to read previous records
Hello all,
I'm working on a project that requires the use of SQL. What I have is a
situation where there can be a group of records in a file where the first
record in a "set" of records is the "main" record and the subsequent
records describe attributes of that "main" record. There is a record type
field in this file which is used to differentiate between the main record
and the "attribute" records. So what I'll have in the file is a "main"
record, then a bunch of "attribute" records, then another "main", then
"attributes", and so on.
There is no field in the "attribute" record that links it back to the
"main" record it goes with. The association between the two is simply the
fact that the "attribute" record comes after the "main" record in the file.
Any thoughts from anyone on an ingenious way to use SQL to grab the
"main" record? I think there has to be a way, just not coming up with it
right now. Any help is appreciated! Thanks!
Bill
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at
http://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
http://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
http://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.