Qlik Community

New to QlikView

Discussion board where members can get started with QlikView.

Announcements
Attend QlikWorld 2020 and hear keynote speaker, Malcolm Gladwell. Register by February 29th to save $200. Learn More
BootCam
Contributor

Month Number to Month Name Tricky one

Hi,

I have a Month field in my Table. And that Field contains values Like this = 'JANUARY', 'FEBRUARY' Like this format. In some of my calculation I am using Maximum Month. So I create a variable vMaxMonth = max(Month).

To Make the Month as Number values I used this piece of code in the script:

LOAD

if(capitalize(MONTH) = 'January', 1,

      if(capitalize(MONTH) = 'February', 2,

      if(capitalize(MONTH) = 'March', 3,

    if(capitalize(MONTH) = 'April', 4,

      if(capitalize(MONTH) = 'May', 5,

      if(capitalize(MONTH) = 'June', 6,

      if(capitalize(MONTH) = 'July', 7,

      if(capitalize(MONTH) = 'August', 8,

      if(capitalize(MONTH) = 'September', 9,

     if(capitalize(MONTH) = 'October', 10,

      if(capitalize(MONTH) = 'November', 11, 12))))))))))) as [Month],

But when I am showing month in the list box I have to show the Month Like this: Jan, Feb, Mar, Apr Like this.

I was also trying to use the INLINE to Make the Month ordered like this:

LOAD * INLINE [

    Month

    Jan

    Feb

    Mar

    Apr

    May

    Jun

    Jul

    Aug

    Sep

    Oct

    Nov

    Dec

];

But since the Month field is getting number value with the using of IF statement, INLINE month can not match with that.

Can anybody guide me how can i achieve above mentioned functionality from the script?

Thanks,

Sk

Tags (1)
1 Solution

Accepted Solutions
Highlighted
MVP & Luminary
MVP & Luminary

Re: Month Number to Month Name Tricky one

Try this:

mapMonths:

MAPPING LOAD Month,Number as MonthNum INLINE [

Month, Number

January, 1,

February, 2,

March, 3,

April, 4,

May, 5,

June, 6,

July, 7,

August, 8,

September, 9,

October, 10,

November, 11

December, 12

];

Data:

LOAD

     dual(Capitalize(MONTH),ApplyMap('mapMonths',Capitalize(MONTH))) as [Sales Month],

     ...other fields,

FROM

     ...

     ;


talk is cheap, supply exceeds demand

View solution in original post

8 Replies
Highlighted
MVP & Luminary
MVP & Luminary

Re: Month Number to Month Name Tricky one

Try this:

mapMonths:

MAPPING LOAD Month,Number as MonthNum INLINE [

Month, Number

January, 1,

February, 2,

March, 3,

April, 4,

May, 5,

June, 6,

July, 7,

August, 8,

September, 9,

October, 10,

November, 11

December, 12

];

Data:

LOAD

     dual(Capitalize(MONTH),ApplyMap('mapMonths',Capitalize(MONTH))) as [Sales Month],

     ...other fields,

FROM

     ...

     ;


talk is cheap, supply exceeds demand

View solution in original post

Highlighted
BootCam
Contributor

Re: Month Number to Month Name Tricky one

Hi Gysbert,

Thanks for the reply. I am a little confused with so many month fields in your code with the same field name 'Month'.

If my original month name in the source file is 'MONTH' and when i am loading it to qlikview i want to change it to

[Sales Month] then how the Month field will be aligned in the code?

Thanks,

Sk

Highlighted
jjmorales
New Contributor II

Re: Month Number to Month Name Tricky one

Hi Skawal,

So the key here I believe is the use of the dual function. Here is a good article on the dual function. In short, it will basically allow you to associate the MONTH field, which is a string, to a number.

Hope it helps to understand

How to use- Dual()

Highlighted
ramasaisaksoft
Valued Contributor III

Re: Month Number to Month Name Tricky one

Hi Ska,

why don't u use Month(MONTH) it will give number of the month else num(Month(MONTH)).

if my understanding is wrong please mention which output you  want?

Highlighted
MVP & Luminary
MVP & Luminary

Re: Month Number to Month Name Tricky one

Oops, you're right. I didn't use the correct field names everywhere. I've edited the code. The [Sales Month] field is created as a dual field. That means it has a text value for display purposes and a numeric value that can be used for calculations and sorting. If you sort the [Sales Month] field by number ascending you'll see the month names (the display format) in the correct order too.


talk is cheap, supply exceeds demand
Highlighted

Re: Month Number to Month Name Tricky one

Instead of ApplyMap, you can try,

Num(Month(Date#(Left(MONTHFIELD,3),'MMM'))) as [Sales Month]

Highlighted
Not applicable

Re: Month Number to Month Name Tricky one

Hi Skawal22,

Try using this.

LOAD

if(capitalize(MONTH) = 'January', 1,

      if(capitalize(MONTH) = 'February', 2,

      if(capitalize(MONTH) = 'March', 3,

    if(capitalize(MONTH) = 'April', 4,

      if(capitalize(MONTH) = 'May', 5,

      if(capitalize(MONTH) = 'June', 6,

      if(capitalize(MONTH) = 'July', 7,

      if(capitalize(MONTH) = 'August', 8,

      if(capitalize(MONTH) = 'September', 9,

     if(capitalize(MONTH) = 'October', 10,

      if(capitalize(MONTH) = 'November', 11, 12))))))))))) as MonthNumber,

LOAD * INLINE [

    Month,MonthNumber

    Jan,1

    Feb,2

    Mar,3

    Apr,4

    May,5

    Jun,6

    Jul,7

    Aug,8

    Sep,9

    Oct,10

    Nov,11

    Dec,12

];

Regards,

Rohan

Highlighted

Re: Month Number to Month Name Tricky one

Hi

Try like this

Dual(Capitalize(Left(MONTH,3)), Num(Month(Date#(Left(MONTH,3),'MMM')))) as SalesMonth

Num(SalesMonth) gives Number like 1,2,3
SalesMonth gives Values like Jan, Feb