Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

try to nest a subfield loop

hello I'm trying to load this table in order to group values ​​according to an established order.

the data in two columns separated by comma


IDPad
Stand
011,2  
H11, G21
021,1
D1, S31
031,1,3D4, F1 , E12


the first Pad matches the first of the Stand column and so on..


The best result on loading data should be


IDPad& Stand
01Pad. 1 Stand. H11 - Pad 2 Stand G21
02Pad. 1 Stand. D1 S31 
03Pad. Stand. D4 F1 - Pad. Stand. E12


As now I'm only get this

IDPadStand
011H11
012G21
021D1
021S31

..and so on

this is tehe load script that i'm using to try to get the result:

for i=1 to 10

LOAD ID,

     subfield(purgechar(Pad, chr(10)),',',$(i)) as Pad,

     subfield(purgechar(Stand, chr(10)),',',$(i))  as Stand,

FROM

(ooxml, embedded labels, table is Recuperati_Foglio1);

NEXT i;

Someone could help me on this?

thnks

Stefano

1 Solution

Accepted Solutions
MarcoWedel

Hi,

maybe like this?:

QlikCommunity_Thread_130987_Pic2.JPG.jpg

LOAD ID,

     Concat('Pad. '&Pad&' Stand. '&Stand, ' - ', RecNo()) as [Pad& Stand]

Group By ID;

LOAD ID,

     Pad,

     Concat(Stand, ' ', RecNo()) as Stand

Group By ID, Pad;

LOAD ID,

     SubField(Pad, ',', IterNo()) as Pad,

     SubField(Stand, ',', IterNo()) as Stand

FROM [http://community.qlik.com/thread/130987]

(html, codepage is 1252, embedded labels, table is @1, filters(Remove(Row, Pos(Top, 5))))

While IterNo() <= If(SubStringCount(Pad,',')>SubStringCount(Stand,','), SubStringCount(Pad,','), SubStringCount(Stand,','))+1;

hope this helps

regards

Marco

View solution in original post

6 Replies
MarcoWedel

try with subfield(), IterNo() and Concat()

jonathandienst
Partner - Champion III
Partner - Champion III

Hi

No need for a loop. Subfield(2 parameters) takes care of that for you:

T_Data:

LOAD

    'Pad ' & Pad & ' Stand ' & Stand As EachCombo

;

LOAD ID,

    subfield(purgechar(Pad, chr(10)),',') As Pad,

    subfield(purgechar(Stand, chr(10)),',') As Stand,

FROM ...

Results:

LOAD Concat(EachCombo, ' - ') As [Pad&Stand]

Resident T_Data;

This will create records for all combinations of Pad and Stand and will list the combinations in the Pad&Stand field.

HTH

Jonathan

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein
MarcoWedel

not exactly, but maybe helps:

QlikCommunity_Thread_130987_Pic1.JPG.jpg

LOAD ID,

    Concat('Pad. '&Pad&' Stand. '&Stand, ' - ', OrdNo) as [Pad& Stand]

Group By ID;

LOAD ID,

    SubField(Pad, ',', IterNo()) as Pad,

    SubField(Stand, ',', IterNo()) as Stand,

    IterNo() as OrdNo

FROM [http://community.qlik.com/thread/130987]

(html, codepage is 1252, embedded labels, table is @1, filters(Remove(Row, Pos(Top, 5))))

While IterNo() <= If(SubStringCount(Pad,',')>SubStringCount(Stand,','), SubStringCount(Pad,','), SubStringCount(Stand,','))+1;

regards

Marco

MarcoWedel

Hi,

maybe like this?:

QlikCommunity_Thread_130987_Pic2.JPG.jpg

LOAD ID,

     Concat('Pad. '&Pad&' Stand. '&Stand, ' - ', RecNo()) as [Pad& Stand]

Group By ID;

LOAD ID,

     Pad,

     Concat(Stand, ' ', RecNo()) as Stand

Group By ID, Pad;

LOAD ID,

     SubField(Pad, ',', IterNo()) as Pad,

     SubField(Stand, ',', IterNo()) as Stand

FROM [http://community.qlik.com/thread/130987]

(html, codepage is 1252, embedded labels, table is @1, filters(Remove(Row, Pos(Top, 5))))

While IterNo() <= If(SubStringCount(Pad,',')>SubStringCount(Stand,','), SubStringCount(Pad,','), SubStringCount(Stand,','))+1;

hope this helps

regards

Marco

Not applicable
Author

Hi Marco Great job

I have only add again the purgechar for get all the data (some dirty spaces in excel) and works perfectly..i don't know how but works

thanks a lot you save me

tabData:

LOAD ID,

     Concat('Pad. '&Pad&' Stand. '&Stand, ' - ', RecNo()) as [Pad& Stand]

Group By ID;

LOAD ID,

     Pad,

     Concat(Stand, ' ', RecNo()) as Stand

Group By ID, Pad;

LOAD ID,

     SubField(purgechar(Pad, chr(10)), ',', IterNo()) as Pad,

     SubField(purgechar(Stand, chr(10)), ',', IterNo()) as Stand

    

    

FROM

(ooxml, embedded labels, table is Recuperati_Foglio1)

While IterNo() <= If(SubStringCount(Pad,',')>SubStringCount(Stand,','), SubStringCount(Pad,','), SubStringCount(Stand,','))+1;

MarcoWedel

you're welcome

regards

Marco