Skip site navigation (1) Skip section navigation (2)

Converting from MS Access field aliases

From: Joel Richard <postgres(at)joelrichard(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Converting from MS Access field aliases
Date: 2007-07-12 14:07:41
Message-ID: E3D00FA5-C52E-4886-AB45-994162498DA8@joelrichard.com (view raw or flat)
Thread:
Lists: pgsql-sql
Good morning,

Oh joyous day! We are upgrading a legacy database system from MS  
Access to PostgreSQL! Yay!

Ok, rejoicing over. Here's our issue and PLEASE point me to the right  
place if this has been discussed before.

In MS Access one can reuse field aliases later in the same query. For  
example:

   SELECT field1 / 2 AS foo,
          field2 * 2 AS bar,
          foo + bar AS total
   WHERE foo < 12;

The first two fields are fine, it's the third that's a problem. The  
database reports

   ERROR:  column "foo" does not exist

This type of situation is happening -many- times in well over fifty  
existing SELECT..INTO and INSERT INTO queries. The obvious solution  
here is to copy the code around to eliminate the need to reuse "foo"  
and "bar" in the query:

   SELECT field1 / 2 AS foo,
          field2 * 2 AS bar,
          (field1 / 2) + (field2 * 2) AS total
   WHERE (field1 / 2) < 12;

But this is a bit ugly and cumbersome and in our case, not desirable  
since foo and bar get used many times in the remains of the query. To  
replace them with the formulae means that debugging is quite  
difficult and very prone to errors.

Does anyone have suggestions on how to circumvent this in a more  
graceful manner? I mean I could probably find a way to do this with a  
couple of queries and some views, or maybe write a function (or more  
like 30 functions) to do the work, but both of those only add to the  
workload in an undesirable manner. :)

To complicate matters, performance is a concern. We're operating on  
upwards of a billion records. Not all at the same time, but the goal  
is to run these  a series of calculations will be done on all of the  
data.

Thanks for any input that you might have.

--Joel


Responses

pgsql-sql by date

Next:From: Tom LaneDate: 2007-07-12 15:34:44
Subject: Re: Using case or if to return multiple rows
Previous:From: Pavel StehuleDate: 2007-07-12 11:25:55
Subject: Re: Using case or if to return multiple rows

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group