Uso de alias en consulta select con tablas con DbLinks

Corro los siguientes scripts, que deberían devolver el mismo resultado, pero me difieren según use el alias o no.
SELECT ID_GRUPO_PROCESO, COUNT(1) CANTIDAD FROM RAPIPAGO.RP_SALIDA_ENTIDAD@LINK_BK1.US.ORACLE.COM WHERE IS_DELETED = 'N' GROUP BY ID_GRUPO_PROCESO
ID_GRUPO_PROCESO CANTIDAD
NULL 18
0811251720YqNmJKsqqJ 2
0811251721ZjdRdvTZBf 2
0811251720YqNmJKs927 2
0811251720YqNmJKs799 2
SELECT d. FROM*
(SELECT ID_GRUPO_PROCESO, COUNT(1) CANTIDAD FROM RAPIPAGO.RP_SALIDA_ENTIDAD@LINK_BK1.US.ORACLE.COM WHERE IS_DELETED = 'N' GROUP BY ID_GRUPO_PROCESO) d
ID_GRUPO_PROCESO CANTIDAD
NULL18
NULL 2
NULL 2
NULL 2
NULL 2
¿Alguna sugerencia?

2 respuestas

Respuesta
1
En la select externa, el * esta mal, debería ser SELECT d.* FROM, quizás no este ejecutando porque tenga capturada la excepción y no te estés dando cuenta.
Perdón, cuando quiero decorar el texto (negrita, cursiva, etc) queda mal cuando la pregunta se publica. Esta página debería tener una vista preliminar para evitar este tipo de problemas.
La 1º consulta es la siguiente:
select id_grupo_proceso, count(1) cantidad
from rapipago.rp_salida_entidad@link_bk1.us.oracle.com
where is_deleted='N'
group by id_grupo_proceso;
Y su resultado es:
id_grupo_proceso                        cantidad
                                                        18
0811251720YqNmJKsqqJ                  2
0811251721ZjdRdvTZBf 2
0811251720YqNmJKs927                 2
0811251720YqNmJKs799                 2
La 2º consulta es:
select d.* from (select id_grupo_proceso, count(1) cantidad from rapipago.rp_salida_entidad@link_bk1.us.oracle.com where is_deleted='N' group by id_grupo_proceso) d
Y su resultado es el siguiente:
id_grupo_proceso                         cantidad   
                                                          18
                                                           2
                                                           2
                                                           2
                                                           2
Ahora sí, espero que se entienda. En realidad las consultas son iguales, sólo que una usa un alias y otra no.
Muchas gracias.
Pues la verdad es que ni idea.
Por si fuera un bug te recomendaría que pusieras, count(*) o en vez de poner d.*, pon el nombre de los campos, pero vamos ni idea.
Realmente es muy extraño. Hay que tener en cuenta que la base donde ejecuto estas consultas es 8i mientras que la base a la que apunta el DbLink es 11g. Supongo que debe ser un tema del juego de caracteres.
Provisionalmente lo pude resolver así:
(SELECT d.* FROM
(SELECT NVL(ID_GRUPO_PROCESO,'zzzzzzzzzzzzzzzzzzzz')ID_GRUPO, COUNT(1) CANTIDAD FROM RAPIPAGO.RP_SALIDA_ENTIDAD@LINK_BK1.US.ORACLE.COM WHERE IS_DELETED = 'N' GROUP BY ID_GRUPO_PROCESO) d)
Donde me pone 'zzzzzzzzzzzzzzzzzzzz' en los campos que tiene nulos.
Muchas gracias.
Respuesta
1
Interesante!
En realidad no es que uses un alias, sino una vista en línea que se resuelve en el local y no en el remoto. La verdad que no se me ocurre porque no muestra el id, pero busca quizá por el tema juego de caracteres a ver si no hay algo por ahí. Sino create una tabla con un create table as select a ver qué guarda.
Perdón, cuando quiero decorar el texto (negrita, cursiva, etc) queda mal cuando la pregunta se publica. Esta página debería tener una vista preliminar para evitar este tipo de problemas.
La 1º consulta es la siguiente:
select id_grupo_proceso, count(1) cantidad
from rapipago.rp_salida_entidad@link_bk1.us.oracle.com
where is_deleted='N'
group by id_grupo_proceso;
Y su resultado es:
id_grupo_proceso                            cantidad
                                                            18
0811251720YqNmJKsqqJ 2
0811251721ZjdRdvTZBf 2
0811251720YqNmJKs927 2
0811251720YqNmJKs799 2
La 2º consulta es:
select d.* from (select id_grupo_proceso, count(1) cantidad from rapipago.rp_salida_entidad@link_bk1.us.oracle.com where is_deleted='N' group by id_grupo_proceso) d
Y su resultado es el siguiente:
id_grupo_proceso           cantidad
                                           18
                                            2
                                            2
                                            2
                                            2
Ahora sí, espero que se entienda. En realidad las consultas son iguales, sólo que una usa un alias y otra no.
Muchas gracias.
Realmente es muy extraño. Hay que tener en cuenta que la base donde ejecuto estas consultas es 8i mientras que la base a la que apunta el DbLink es 11g. Supongo que debe ser un tema del juego de caracteres.
Provisionalmente lo pude resolver así:
(SELECT d.* FROM
(SELECT NVL(ID_GRUPO_PROCESO,'zzzzzzzzzzzzzzzzzzzz')ID_GRUPO, COUNT(1) CANTIDAD FROM RAPIPAGO.RP_SALIDA_ENTIDAD@LINK_BK1.US.ORACLE.COM WHERE IS_DELETED = 'N' GROUP BY ID_GRUPO_PROCESO) d)
Donde me pone 'zzzzzzzzzzzzzzzzzzzz' en los campos que tiene nulos.
Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas