Como convertir los SELECT que usan AS en otros manejadores a Postrgres

From: Orlando Ramirez <orlan2_r(at)yahoo(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Como convertir los SELECT que usan AS en otros manejadores a Postrgres
Date: 2007-05-12 07:31:36
Message-ID: 939128.2071.qm@web52111.mail.re2.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estoy migrando una base de datos de Sybase a Postgres y en muchos de los SELECT de sus procedientos almacenados se usa la declaracion AS.

Agradezco a Jaime Casanova por diligente su comentario, aunque no alcanzo a comprender la solución que propone, y a Alvaro Herrera por el suyo en donde lo mas saltante es su ironica frase: Que modelo tan horrible. Lo que no comprende Alvaro es que existen estructuras de datos en donde el usuario lo tiene definido de esa manera y se vienen usando asi por siglos. En este caso concreto, esta es una tabla que contiene un plan de cuentas contable.

Voy a tratar ilustrar un caso. Supongamos que tenemos un tabla llamada CUENTAS que posee tres columnas: el codigo de cuenta cod_cta (varchar 20), la descripcion de la cuenta des_cta (varchar 100) y el saldo de la cuenta mto_sld (numeric (12,2)).

Algunas de las filas de esta tabla son:

1111---------------------------- CAJA ------------------------------------- 100,000.00
111101------------------------ OFICINA PRINCIPAL --------------- 60,000.00
11110101-------------------- BILLETES Y MONEDAS --------- 60,000.00
1111010100000001---- CAJERO1 ------------------------------- 40,000.00
1111010100000002---- CAJERO2 ------------------------------- 20,000.00
111102------------------------ AGENCIA ZONA FRANCA ------ 40,000.00
11110201-------------------- BILLETES Y MONEDAS -------- 40,000.00
1111020100000001---- CAJERO1 ------------------------------- 30,000.00
1111020100000002---- CAJERO2 ------------------------------- 10,000.00
1211---------------------------- FONDOS INTERBANCARIOS--- 80,000.00
121104------------------------ CAJAS MUNICIPALES------------- 80,000.00
12110406000001-------- CAJA TRUJILLO---------------------- 45,000.00
12110406000002-------- CAJA AREQUIPA--------------------- 35,000.00

Se desea reportar los saldos de las cuentas contables a 8 digitos:

11110101------------------- BILLETES Y MONEDAS --------- 60,000.00
11110201------------------- BILLETES Y MONEDAS --------- 40,000.00
12110406------------------ < desconocido > ------------------------80,000.00

En Sybase (usando subsconsultas) la sentencia SELECT tiene esta forma (no es el query exacto):

SELECT distinct(substring(cod_cta,1,8)) AS codigo,
(select des_cta from CUENTAS where cod_cta=codigo),
(select sum(mto_sld) from CUENTAS where cod_cta=codigo)
FROM CUENTAS
WHERE length(cod_cta)>=8

Como bien lo corrobora Alvaro, en Postgres cuando se hace esto el identificador codigo definido con AS no es reconocido en la subconsultas.

¿Como hacer esto de una manera eficiente sin usar la declaracion AS?

Atte.

Orlando Ramirez
CEO http-peru


---------------------------------
Food fight? Enjoy some healthy debate
in the Yahoo! Answers Food & Drink Q&A.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Victor Lopez 2007-05-12 10:09:34 pg_hba.conf ¿donde ... como?
Previous Message Edgard Pineda 2007-05-12 04:19:39 Re: Mejor opcion de alta disponibilidad y balanceo de carga?