Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
jacqueshol
Creator
Creator

Splitting one field into a number of fields

Hi All,

Heads-up!  I am new to all of this, so patience with me will be appreciated.

I have recently started looking at bringing in Accpac data from SQL into QlikView.  I have run into a bit of a problem that I can't get my head around. I have a ACCTID field that has the following format:  000000AA00000. E.g. one of the 1000's of values for ACCTID is 001140AB91004.  This field's composition can be explained as follows:

  • The first four 0's indicate the account number (positions 1-4 in the field) - 0011 in the example above (Revenue)
  • The next two 0's indicated the region (positions 5-6) - 40 in the example above (Coastal Region)
  • The next two digits (AA) indicate the depot (positions 7-8) - AB in the example above (Alberton Depot)
  • The next three 0'2 indicate the customer (positions 9-11) - 910 in the example above (Shell Customer)
  • The last two 0'2 indicate the division (positions 12-13) - 04 in the example above (Fuel Division)

I want to be able to extract each of these five "subfields" as separate list boxes to be able to filter on.  In addition I need to be able to combine the 3rd and 4th set of "subfields" as one field being AA000 (AB910) in the example above).

Solutions I've tried

  1. I had a look at using the Subfield function, but since I don't have any delimiter, I can't, or rather don't know , how to use it correctly.
  2. I have also tried creating list boxes with expressions. E.g.
    • To get to Depot and Customer, I used:  =mid(ACCTID,7,5) which extracted AB910 (which is what I need).
    • To get the AccNo, I used: =left(ACCTID,4) which gave me 0011 (also what I need).
    • However, when I start filtering on these, it doesn't seem to work.  E.g. I select AB910 and then 0010, it discards the AB910 values. Vice versa.  There are values for 001140AB91004 though. If I select the original value of 001140AB91004, it filters perfectly, just not when I try and do it separately.

Thank you all for assisting.  I am looking forward to your feedback.

Take care,

Jacques

1 Solution

Accepted Solutions
jacqueshol
Creator
Creator
Author

Hi All,

Strange how nicely things work out once you apply your mind.  I managed to solve my problem.  Just added this to my script load.

LOAD *,

  left(ACCTID,4) as ACCTNO,

  mid(ACCTID,5,2) as REGION,

  mid(ACCTID,7,2) as DEPOT,

  mid(ACCTID,9,3) as CUSTOMER,

  mid(ACCTID,7,5) as SCHEDULE_BOARD,

  right(ACCTID,2) as DIVISION;

SQL SELECT *

FROM "AP_TSFG_DAT".dbo.GLAFS;

SQL SELECT *

FROM "AP_TSFG_DAT".dbo.GLAMF;

View solution in original post

2 Replies
jacqueshol
Creator
Creator
Author

I've just noticed that although I have a list box for each of the five values mentioned above, the field name remains ACCTID.  No wonder values are discarded when I select multiple selections.  I suppose I need to rename the new fields to appropriate names.  Just don't know how to do it.  For example, I would like to call the AB910 as "Cost_Centre" in my example above.  Any suggestions?

jacqueshol
Creator
Creator
Author

Hi All,

Strange how nicely things work out once you apply your mind.  I managed to solve my problem.  Just added this to my script load.

LOAD *,

  left(ACCTID,4) as ACCTNO,

  mid(ACCTID,5,2) as REGION,

  mid(ACCTID,7,2) as DEPOT,

  mid(ACCTID,9,3) as CUSTOMER,

  mid(ACCTID,7,5) as SCHEDULE_BOARD,

  right(ACCTID,2) as DIVISION;

SQL SELECT *

FROM "AP_TSFG_DAT".dbo.GLAFS;

SQL SELECT *

FROM "AP_TSFG_DAT".dbo.GLAMF;