pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Gavin Flower <GavinFlower@archidevsys.co.nz>
To: Enzen user <anushka.achaiah@enzentech.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: sorting months according to fiscal year
Date: Tue, 23 Aug 2011 11:58:15 +1200
Message-ID: <4E52ED17.9070204@archidevsys.co.nz> (raw)
In-Reply-To: <1314019633187-4723409.post@n5.nabble.com>
References: <1314019633187-4723409.post@n5.nabble.com>

On 23/08/11 01:27, Enzen user wrote:
> Hi
> I have to  rearrange the months according to the fiscal year i.e from April
> to march and use the same in the order by clause of a query.
> I have written the following postgresql function for the same, but to_number
> is returning an error.
> Can you please tell me where i'm going wrong?
> Instead of the function to_number can you suggest any other function that
> will convert a particular month to its corresponding month number(ex:
> april=4 or jan=1)
>
>
>   CREATE FUNCTION sort_month(to_number('April','MM')) RETURNS numeric AS $$
> DECLARE
>
> BEGIN
>
>         CASE WHEN 4 THEN 1
>              WHEN 5 THEN 2
>              WHEN 6 THEN 3
>              WHEN 7 THEN 4
>              WHEN 8 THEN 5
>              WHEN 9 THEN 6
>              WHEN 10 THEN 7
>              WHEN 11 THEN 8
>              WHEN 12 THEN 9
>              WHEN 1 THEN 10
>              WHEN 2 THEN 11
>              WHEN 3 THEN 12
>              ELSE 0
> END;
>
>
>
> $$ LANGUAGE plpgsql;
>
>
>
> --
> View this message in context: http://postgresql.1045698.n5.nabble.com/sorting-months-according-to-fiscal-year-tp4723409p4723409.ht...
> Sent from the PostgreSQL - sql mailing list archive at Nabble.com.
>
You might find the following faster...

DROP FUNCTION IF EXISTS
     sort_mont
     (
         to_number int
     ) ;

CREATE FUNCTION
     sort_mont
     (
         to_number int
     )
     RETURNS numeric
     LANGUAGE plpgsql
AS
$$
     BEGIN
         RETURN 1 + (to_number + 8) % 12;
     END;
$$;

SELECT sort_mont(1);
SELECT sort_mont(12);

/// output..

gavin=> \i modulus_stored_proc.sql
DROP FUNCTION
CREATE FUNCTION
  sort_mont
-----------
         10
(1 row)

  sort_mont
-----------
          9
(1 row)

gavin=>





view thread (3+ messages)

Message-ID: <4E52ED17.9070204@archidevsys.co.nz>
Permalink:  ../4E52ED17.9070204@archidevsys.co.nz/
Also on:    postgresql.org/message-id/4E52ED17.9070204@archidevsys.co.nz

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: GavinFlower@archidevsys.co.nz, anushka.achaiah@enzentech.com
  Subject: Re: sorting months according to fiscal year
  In-Reply-To: <4E52ED17.9070204@archidevsys.co.nz>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox