Migracion guarani 2.8.x a guarani 3.9.0

Hola:

Estoy migrando desde guarani 2.8.x a guarani 3.9.0, con el migrador que me pasaron,
( Scripts_Migracion_Guarani_2.8_Guarani_3.9_25-06-2014.rar), cuando quiero pasar ,60_Equivalencias\02_Migracion, en 01_sga_equiv_tramite.sql, la funcion mig.equiv_tramite() me dice que devuelve mas de un valor y da error, encontre cual es la consulta que tira el error ,cual seria la correccion para hacer (esta en negrita):
– Funcion para pasar los tramites de equivalencias
CREATE OR REPLACE FUNCTION mig.equiv_tramite()
RETURNS VOID AS
$BODY$
DECLARE
_equivalencia_tramite INTEGER;
cursor1 RECORD;
BEGIN

SET search_path = ${pg_esquema};

FOR cursor1 IN ([b]SELECT * FROM mig.temp_equiv_planes[/b])
LOOP
    -- Tramites de Equivalencias...
	INSERT INTO sga_equiv_tramite(alumno,plan_version,fecha,tipo_tramite,origen,documento,generacion_automatica,matriz_oficial,institucion,propuesta,rectifica_a,
			version,version_impresa,nro_ultima_copia,nua,fecha_generacion,estado)
	SELECT	
	(SELECT DISTINCT alumno FROM mig._cnv_pk_alumnos cpa, mig.sga_equiv_otorgada eo WHERE cpa.unidad_academica = eo.unidad_academica AND cpa.carrera = eo.carrera AND cpa.legajo = eo.legajo AND eo.operacion_equiv = seo.operacion_equiv), 
	(SELECT DISTINCT plan_version FROM mig._cnv_pk_planes_versiones cpv, mig.sga_equiv_otorgada eo WHERE cpv.unidad_academica = eo.unidad_academica AND cpv.carrera = cursor1.carrera AND cpv.plan_g2 = cursor1.plan AND cpv.version = cursor1.version AND eo.operacion_equiv = cursor1.operacion_equiv), 
	seo.fecha,
	seo.tipo_equiv,
	CASE
		WHEN seo.origen = 'I' THEN 1
		WHEN seo.origen = 'C' THEN 2
		WHEN seo.origen = 'P' THEN 3
		WHEN seo.origen = 'V' THEN 4
		WHEN seo.origen = 'E' THEN 5
		WHEN seo.origen = 'S' THEN 6
		ELSE 1
	END,
	cpd.documento,
	seo.aplic_automatica,
	seo.matriz_oficial,
	cpi.institucion,
	cpp.propuesta,
	--cp.plan,
	seo.operacion_original,
	seo.version,
	COALESCE(seo.version_impresa,0),
	seo.nro_ultima_copia,
	CASE 
		WHEN seo.nua IS NOT NULL THEN  to_number(seo.nua,'999999999999999')
		WHEN seo.nua IS NULL THEN  NULL
		WHEN seo.nua = '' THEN  NULL
	END,
	seo.fecha,
	seo.estado
	FROM
		mig.sga_equiv_operac seo 
	    	LEFT OUTER JOIN mig._cnv_pk_instituciones cpi ON (seo.institucion = cpi.institucion_g2)
		    LEFT OUTER JOIN mig._cnv_pk_propuestas cpp ON (seo.unidad_academica = cpp.unidad_academica AND seo.carrera_origen = cpp.carrera)
		    LEFT OUTER JOIN mig._cnv_pk_documentos cpd ON (seo.nro_resolucion = cpd.resolucion AND cpd.documento_tipo = 10) -- cpd.tabla = 'sga_equiv_resol'
	WHERE
		seo.operacion_equiv IN (SELECT eo.operacion_equiv FROM mig.sga_equiv_otorgada eo) AND
		seo.operacion_equiv = cursor1.operacion_equiv
	ORDER BY seo.operacion_equiv;

	_equivalencia_tramite := (SELECT currval('sga_equiv_tramite_seq'));

	UPDATE mig.temp_equiv_planes SET equivalencia_tramite = _equivalencia_tramite 
	 WHERE carrera = cursor1.carrera AND legajo = cursor1.legajo AND plan = cursor1.plan AND version = cursor1.version;

END LOOP;

END;
$BODY$
LANGUAGE ‘plpgsql’;

– Migra los tramites de equivalencias
SELECT * FROM mig.equiv_tramite();

Muchas gracias!!!

Pablo, el problema esta en una de las dos select que se encuentran en el INSERT dentro de esa funcnion, es decir en alguna de estas dos subquerys que se espera devuelva un solo valor cada una:

 
   (SELECT DISTINCT alumno 
        FROM mig._cnv_pk_alumnos cpa, mig.sga_equiv_otorgada eo WHERE cpa.unidad_academica = eo.unidad_academica AND cpa.carrera = eo.carrera AND cpa.legajo = eo.legajo AND eo.operacion_equiv = seo.operacion_equiv),

    (SELECT DISTINCT plan_version 
       FROM mig._cnv_pk_planes_versiones cpv, mig.sga_equiv_otorgada eo WHERE cpv.unidad_academica = eo.unidad_academica AND cpv.carrera = cursor1.carrera AND cpv.plan_g2 = cursor1.plan AND cpv.version = cursor1.version AND eo.operacion_equiv = cursor1.operacion_equiv)

Es en el unico lugar dentro de la funcion donde se espera que una consulta devuelva un solo valor.

¿Tienen tramites de equivalencias con mas de un alumno?
Ejecuta lo siguiente y fijate si la ultima consulta devuelve registros…


CREATE TEMP TABLE _eq  (operacion_equiv integer, unidad_academica varchar(5), carrera varchar(5), cant_equiv integer, cant_alumnos integer);

INSERT INTO _eq (operacion_equiv, unidad_academica, carrera, cant_equiv, cant_alumnos)
SELECT  operacion_equiv, unidad_academica, carrera, COUNT(*) , COUNT(DISTINCT legajo) 
   FROM sga_equiv_otorgada
GROUP BY 1, 2, 3;

SELECT * FROM _eq WHERE cant_alumnos > 1;

DROP TABLE _eq;

Espero resultados para continuar…

Hola:

Ejecute la consulta y no me tira ningun resultado. La columna cant_alumnos son todos igual a 1.

Muchas gracias!!!

Esta bien, cada tramite de equivalencias es para un solo alumno.

Entonces el problema esta en alguna de esas dos subquerys que son las que recuperan el dato de version de plan del alumno.

Tal vez tengas trámites de equivalencias que no tengan equivalencias cargadas… ese debe ser el problema.
Fijate si esta consulta te devuelve registros:

  
 SELECT a.operacion_equiv FROM mig.sga_equiv_operac as a
    EXCEPT
  SELECT b.operacion_equiv FROM mig.sga_equiv_otorgada as b;

Igualmente estamos modificando el script para que solo pase los tramites de equivalencias que tengan detalle. Los tramites que no tengan equivalencias definidas, al no poder recuperar el alumno, no se pueden migrar a Guarani 3.
Vemos de actualizar este archivo 01_xxxxxx y enviartelo.

Hola:
Al ejecutar la consulta me devuelve 70 registros.
Muchas gracias!!!

Bueno Pablo, entonces fijate de reemplazar estos dos archivos y volver a correr:

Les quedaran esos tramites de equivalencias sin equivalencias sin pasar a G3, ya que al no poder inferir a que alumno le corresponden esos tramites de equivalencias, estos no pueden migrarse.

Por favor proba con estos archivos y decime como fue.


01_sga_equiv_tramite.sql (3.94 KB)

02_sga_equiv_otorgada.sql (1.79 KB)

Hola:

Me tiro el siguiente error:
2014/09/01 15:51:42 - Spoon - Iniciando trabajo…
2014/09/01 15:51:42 - mig_Equivalencias - Ejecución del trabajo comenzada
2014/09/01 15:51:42 - mig_Equivalencias - exec(0, 0, START.0)
2014/09/01 15:51:42 - START - Starting job entry
2014/09/01 15:51:42 - mig_Equivalencias - Entrada de comienzo [01_sga_equiv_tramite]
2014/09/01 15:51:42 - mig_Equivalencias - exec(1, 0, 01_sga_equiv_tramite.0)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - Starting job entry
2014/09/01 15:51:42 - conexion_pg - New database connection defined
2014/09/01 15:51:42 - conexion_pg - Connected to database.
2014/09/01 15:51:42 - 01_sga_equiv_tramite - El archivo SQL [file:///D:/GUARANI-POSTGRES/VERSIONES SIU-GUARANI/SIU-GUARANI3/Guarani_3.9_25-06-2014/02_Modulos/60_Equivalencias/02_Migracion/01_sga_equiv_tramite.sql] existe
2014/09/01 15:51:42 - 01_sga_equiv_tramite - Ejecutando SQL:
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – *******************************************************************************
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – SI SALE UN MENSAJE DE ERROR, NO CONTINUE CON LA EJECUCION DEL SCRIPT
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – SEGUIR CON EL SIGUIENTE SCRIPT
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – NO se pasan tramites de equivalencias abiertos que NO tengan detalle, porque no se puede sacar
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – para que alumno es el trámite de equivalencias…
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – *******************************************************************************
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SELECT * FROM mig.get_script_corrido( 1, ‘EQUIVALENCIAS’) ;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SET search_path = negocio;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Actualiza a null el campo nua
2014/09/01 15:51:42 - 01_sga_equiv_tramite - UPDATE mig.sga_equiv_operac SET nua = NULL WHERE nua = ‘’;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Creo tabla temporal para registrar los tramites de equivalencias sin equivalenicias registradas
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Estas no pueden migrarse porque en G3 se necesita registrar el alumno en la tabla sga_equiv_tramites
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – y este dato del alumno existe en la tabla mig.sga_equiv_otorgada, que al no tener registros no se puede recuperar de quien es el
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – tramite de equivalencias.
2014/09/01 15:51:42 - 01_sga_equiv_tramite - DROP TABLE IF EXISTS mig._TramiteEquiv ;
2014/09/01 15:51:42 - 01_sga_equiv_tramite - CREATE TABLE mig._TramiteEquiv (operacion_equiv integer);
2014/09/01 15:51:42 - 01_sga_equiv_tramite - INSERT INTO mig._TramiteEquiv (operacion_equiv)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SELECT a.operacion_equiv FROM mig.sga_equiv_operac as a
2014/09/01 15:51:42 - 01_sga_equiv_tramite - EXCEPT
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SELECT b.operacion_equiv FROM mig.sga_equiv_otorgada as b;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Pasa el id del alumno del detalle de cada equivalencia a la cabecera
2014/09/01 15:51:42 - 01_sga_equiv_tramite - INSERT INTO sga_equiv_tramite (
2014/09/01 15:51:42 - 01_sga_equiv_tramite - equivalencia_tramite,alumno,plan_version,fecha,tipo_tramite,origen,documento,generacion_automatica,matriz_oficial,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - institucion,propuesta,rectifica_a, version,version_impresa,nro_ultima_copia,nua,fecha_generacion,estado
2014/09/01 15:51:42 - 01_sga_equiv_tramite - )
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SELECT
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.operacion_equiv,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - (SELECT DISTINCT alumno
2014/09/01 15:51:42 - 01_sga_equiv_tramite - FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_alumnos as cpa
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHERE eo.operacion_equiv = seo.operacion_equiv
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpa.unidad_academica = eo.unidad_academica
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpa.carrera = eo.carrera
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpa.legajo = eo.legajo
2014/09/01 15:51:42 - 01_sga_equiv_tramite - ), – alumno
2014/09/01 15:51:42 - 01_sga_equiv_tramite - (SELECT DISTINCT plan_version
2014/09/01 15:51:42 - 01_sga_equiv_tramite - FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_planes_versiones as cpv
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHERE eo.operacion_equiv = seo.operacion_equiv
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpv.unidad_academica = eo.unidad_academica
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpv.carrera = eo.carrera
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpv.plan_g2 = eo.plan
2014/09/01 15:51:42 - 01_sga_equiv_tramite - AND cpv.version = eo.version
2014/09/01 15:51:42 - 01_sga_equiv_tramite - ), – plan_version
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.fecha,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.tipo_equiv,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - CASE
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘I’ THEN 1
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘C’ THEN 2
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘P’ THEN 3
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘V’ THEN 4
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘E’ THEN 5
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘S’ THEN 6
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.origen = ‘H’ THEN 6 – Homologada…
2014/09/01 15:51:42 - 01_sga_equiv_tramite - ELSE 1 – Interna
2014/09/01 15:51:42 - 01_sga_equiv_tramite - END,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - cpd.documento,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.aplic_automatica,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.matriz_oficial,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - cpi.institucion,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - cpp.propuesta,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – cp.plan,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.operacion_original,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.version,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - COALESCE(seo.version_impresa,0),
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.nro_ultima_copia,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - CASE
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.nua IS NOT NULL THEN to_number(seo.nua,‘999999999999999’)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.nua IS NULL THEN NULL
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHEN seo.nua = ‘’ THEN NULL
2014/09/01 15:51:42 - 01_sga_equiv_tramite - END,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.fecha,
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.estado
2014/09/01 15:51:42 - 01_sga_equiv_tramite - FROM
2014/09/01 15:51:42 - 01_sga_equiv_tramite - mig.sga_equiv_operac seo
2014/09/01 15:51:42 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_instituciones cpi ON (seo.institucion = cpi.institucion_g2)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_propuestas cpp ON (seo.unidad_academica = cpp.unidad_academica AND seo.carrera_origen = cpp.carrera)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_documentos cpd ON (seo.nro_resolucion = cpd.resolucion AND cpd.documento_tipo = 10) – cpd.tabla = ‘sga_equiv_resol’
2014/09/01 15:51:42 - 01_sga_equiv_tramite - WHERE
2014/09/01 15:51:42 - 01_sga_equiv_tramite - seo.operacion_equiv NOT IN (SELECT operacion_equiv FROM mig._TramiteEquiv)
2014/09/01 15:51:42 - 01_sga_equiv_tramite - ORDER BY seo.operacion_equiv;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Borro la tabla de tramites sin detalle.
2014/09/01 15:51:42 - 01_sga_equiv_tramite - DROP TABLE IF EXISTS mig._TramiteEquiv ;
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – Actualiza la secuencia del tramite de equivalencia
2014/09/01 15:51:42 - 01_sga_equiv_tramite - SELECT SETVAL(‘sga_equiv_tramite_seq’, (SELECT MAX(equivalencia_tramite) FROM sga_equiv_tramite));
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite -
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – *************************************************************************************
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – ACTUALIZACION DE LA TABLA DE MODULOS.
2014/09/01 15:51:42 - 01_sga_equiv_tramite - INSERT INTO mig._app_migracion ( modulo, fecha_generacion, fecha_actualiz, script_corrido )
2014/09/01 15:51:42 - 01_sga_equiv_tramite - VALUES (‘EQUIVALENCIAS’ , CURRENT_DATE, CURRENT_TIMESTAMP, 1 );
2014/09/01 15:51:42 - 01_sga_equiv_tramite - – *************************************************************************************
2014/09/01 15:51:43 - 01_sga_equiv_tramite - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : Ocurrió un error al ejecutar esta entrada de trabajo:
2014/09/01 15:51:43 - 01_sga_equiv_tramite - Couldn’t execute SQL: SELECT * FROM mig.get_script_corrido( 1, ‘EQUIVALENCIAS’) ;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - SET search_path = negocio;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - UPDATE mig.sga_equiv_operac SET nua = NULL WHERE nua = ‘’;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - DROP TABLE IF EXISTS mig._TramiteEquiv ;
2014/09/01 15:51:43 - 01_sga_equiv_tramite - CREATE TABLE mig._TramiteEquiv (operacion_equiv integer);
2014/09/01 15:51:43 - 01_sga_equiv_tramite - INSERT INTO mig._TramiteEquiv (operacion_equiv)
2014/09/01 15:51:43 - 01_sga_equiv_tramite - SELECT a.operacion_equiv FROM mig.sga_equiv_operac as a
2014/09/01 15:51:43 - 01_sga_equiv_tramite - EXCEPT
2014/09/01 15:51:43 - 01_sga_equiv_tramite - SELECT b.operacion_equiv FROM mig.sga_equiv_otorgada as b;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - INSERT INTO sga_equiv_tramite (
2014/09/01 15:51:43 - 01_sga_equiv_tramite - equivalencia_tramite,alumno,plan_version,fecha,tipo_tramite,origen,documento,generacion_automatica,matriz_oficial,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - institucion,propuesta,rectifica_a, version,version_impresa,nro_ultima_copia,nua,fecha_generacion,estado
2014/09/01 15:51:43 - 01_sga_equiv_tramite - )
2014/09/01 15:51:43 - 01_sga_equiv_tramite - SELECT
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.operacion_equiv,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - (SELECT DISTINCT alumno
2014/09/01 15:51:43 - 01_sga_equiv_tramite - FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_alumnos as cpa
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHERE eo.operacion_equiv = seo.operacion_equiv
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpa.unidad_academica = eo.unidad_academica
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpa.carrera = eo.carrera
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpa.legajo = eo.legajo
2014/09/01 15:51:43 - 01_sga_equiv_tramite - ), (SELECT DISTINCT plan_version
2014/09/01 15:51:43 - 01_sga_equiv_tramite - FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_planes_versiones as cpv
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHERE eo.operacion_equiv = seo.operacion_equiv
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpv.unidad_academica = eo.unidad_academica
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpv.carrera = eo.carrera
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpv.plan_g2 = eo.plan
2014/09/01 15:51:43 - 01_sga_equiv_tramite - AND cpv.version = eo.version
2014/09/01 15:51:43 - 01_sga_equiv_tramite - ), seo.fecha,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.tipo_equiv,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - CASE
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘I’ THEN 1
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘C’ THEN 2
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘P’ THEN 3
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘V’ THEN 4
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘E’ THEN 5
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘S’ THEN 6
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.origen = ‘H’ THEN 6 ELSE 1 END,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - cpd.documento,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.aplic_automatica,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.matriz_oficial,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - cpi.institucion,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - cpp.propuesta,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.operacion_original,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.version,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - COALESCE(seo.version_impresa,0),
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.nro_ultima_copia,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - CASE
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.nua IS NOT NULL THEN to_number(seo.nua,‘999999999999999’)
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.nua IS NULL THEN NULL
2014/09/01 15:51:43 - 01_sga_equiv_tramite - WHEN seo.nua = ‘’ THEN NULL
2014/09/01 15:51:43 - 01_sga_equiv_tramite - END,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.fecha,
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.estado
2014/09/01 15:51:43 - 01_sga_equiv_tramite - FROM
2014/09/01 15:51:43 - 01_sga_equiv_tramite - mig.sga_equiv_operac seo
2014/09/01 15:51:43 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_instituciones cpi ON (seo.institucion = cpi.institucion_g2)
2014/09/01 15:51:43 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_propuestas cpp ON (seo.unidad_academica = cpp.unidad_academica AND seo.carrera_origen = cpp.carrera)
2014/09/01 15:51:43 - 01_sga_equiv_tramite - LEFT OUTER JOIN mig._cnv_pk_documentos cpd ON (seo.nro_resolucion = cpd.resolucion AND cpd.documento_tipo = 10) WHERE
2014/09/01 15:51:43 - 01_sga_equiv_tramite - seo.operacion_equiv NOT IN (SELECT operacion_equiv FROM mig._TramiteEquiv)
2014/09/01 15:51:43 - 01_sga_equiv_tramite - ORDER BY seo.operacion_equiv;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - DROP TABLE IF EXISTS mig._TramiteEquiv ;
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - SELECT SETVAL(‘sga_equiv_tramite_seq’, (SELECT MAX(equivalencia_tramite) FROM sga_equiv_tramite));
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - INSERT INTO mig._app_migracion ( modulo, fecha_generacion, fecha_actualiz, script_corrido )
2014/09/01 15:51:43 - 01_sga_equiv_tramite - VALUES (‘EQUIVALENCIAS’ , CURRENT_DATE, CURRENT_TIMESTAMP, 1 );
2014/09/01 15:51:43 - 01_sga_equiv_tramite -
2014/09/01 15:51:43 - 01_sga_equiv_tramite - ERROR: una subconsulta utilizada como expresión retornó más de un registro
2014/09/01 15:51:43 - conexion_pg - Connection to database closed!
2014/09/01 15:51:43 - mig_Equivalencias - Finalizó la entrada de trabajo [01_sga_equiv_tramite] (resultado=[false])
2014/09/01 15:51:43 - mig_Equivalencias - Ejecución del trabajo finalizada
2014/09/01 15:51:43 - Spoon - Trabajo ha terminado.

Muchas gracias!!!

Seguis con el tema de las subquerys, debe ser la 2da subquery, la que recupera el dato plan_version:

CREATE TEMP TABLE _Tequiv (operacion_equiv integer, unidad_academica varchar(5), carrera varchar(5), legajo varchar(15), plan varchar(5), version varchar(5), plan_version integer)

INSERT INTO _Tequiv (operacion_equiv, unidad_academica, carrera, legajo, plan, version, plan_version)
SELECT DISTINCT eo_operacion_equiv, eo.unidad_academica, eo.carrera, eo.legajo, eo.plan, eo.version, cpv.plan_version 
	   FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_planes_versiones as cpv 
	  WHERE eo.operacion_equiv = seo.operacion_equiv   
	    AND cpv.unidad_academica = eo.unidad_academica 
	    AND cpv.carrera = eo.carrera 
	    AND cpv.plan_g2 = eo.plan 
	    AND cpv.version = eo.version;

-- Fijate si esta consulta devuelve registros. Si devuelve en esos tramites de equivalencias estaria el problema...
SELECT operacion_equiv, unidad_academica, carrera, legajo, count(*)
  FROM _Tequiv
GROUP BY operacion_equiv, unidad_academica, carrera, legajo, count(*)
HAVING COUNT(*) > 1;


DROP TABLE _Tequiv;

Hola:

No devuelve ningun registro.Modifique algo de tu consulta que estaba mal:

CREATE TEMP TABLE _Tequiv (operacion_equiv integer, unidad_academica varchar(5), carrera varchar(5), legajo varchar(15), plan varchar(5), version varchar(5), plan_version integer)

INSERT INTO _Tequiv (operacion_equiv, unidad_academica, carrera, legajo, plan, version, plan_version)
SELECT DISTINCT eo.operacion_equiv, eo.unidad_academica, eo.carrera, eo.legajo, eo.plan, eo.version, cpv.plan_version
FROM mig.sga_equiv_otorgada as eo, mig._cnv_pk_planes_versiones as cpv
WHERE cpv.unidad_academica = eo.unidad_academica
AND cpv.carrera = eo.carrera
AND cpv.plan_g2 = eo.plan
AND cpv.version = eo.version;

– Fijate si esta consulta devuelve registros. Si devuelve en esos tramites de equivalencias estaria el problema…
SELECT operacion_equiv, unidad_academica, carrera, legajo, count()
FROM _Tequiv
GROUP BY operacion_equiv, unidad_academica, carrera, legajo–, count(
)
HAVING COUNT(*) > 1;

DROP TABLE _Tequiv;

Muchas gracias!!!

No entiendo, ya que la 1er subquery viste que no traia mas de un dato de alumno por tramite de equivalencia y en la 2da lo mismo, cual es la que esta fallando?

Hola:

Te paso la consulta del procedimiento como la adapte:

SELECT
seo.operacion_equiv,
(SELECT DISTINCT alumno
FROM mig._cnv_pk_alumnos cpa, mig.sga_equiv_otorgada eo
WHERE cpa.unidad_academica = eo.unidad_academica
AND cpa.carrera = eo.carrera
AND cpa.legajo = eo.legajo
AND eo.operacion_equiv = seo.operacion_equiv),
(SELECT DISTINCT plan_version FROM mig._cnv_pk_planes_versiones cpv, mig.sga_equiv_otorgada eo,
( SELECT DISTINCT a.operacion_equiv, a.carrera, a.legajo, a.plan, a.version, 0, 0
FROM mig.sga_equiv_otorgada as a, mig.sga_equiv_otorgada as b
WHERE a.operacion_equiv = b.operacion_equiv
AND (a.plan <> b.plan OR a.version <> b.version)
ORDER BY 1) AS cursor1
WHERE cpv.unidad_academica = eo.unidad_academica
AND cpv.carrera = cursor1.carrera
AND cpv.plan_g2 = cursor1.plan
AND cpv.version = cursor1.version
AND eo.operacion_equiv = cursor1.operacion_equiv)

FROM ( SELECT DISTINCT a.operacion_equiv, a.carrera, a.legajo, a.plan, a.version, 0, 0
FROM mig.sga_equiv_otorgada as a,mig.sga_equiv_otorgada as b
WHERE a.operacion_equiv = b.operacion_equiv
AND (a.plan <> b.plan OR a.version <> b.version)
ORDER BY 1) AS cursor1
LEFT OUTER JOIN mig.sga_equiv_operac seo ON (seo.operacion_equiv = cursor1.operacion_equiv)
LEFT OUTER JOIN mig._cnv_pk_instituciones cpi ON (seo.institucion = cpi.institucion_g2)
LEFT OUTER JOIN mig._cnv_pk_propuestas cpp ON (seo.unidad_academica = cpp.unidad_academica AND seo.carrera_origen = cpp.carrera)
LEFT OUTER JOIN mig._cnv_pk_documentos cpd ON (seo.nro_resolucion = cpd.resolucion AND cpd.documento_tipo = 10) – cpd.tabla = ‘sga_equiv_resol’
WHERE
seo.operacion_equiv IN (SELECT eo.operacion_equiv FROM mig.sga_equiv_otorgada eo) AND
seo.operacion_equiv = cursor1.operacion_equiv

Me tira:

ERROR: una subconsulta utilizada como expresión retornó más de un registro
********** Error **********

ERROR: una subconsulta utilizada como expresión retornó más de un registro
SQL state: 21000

Muchas gracias!!!

Volvamos de nuevo a verificar si existe para un tramite de equivalencia el registro de un alumno con diferente plan o version de plan de estudios en distintas equivalencias:


CREATE TEMP TABLE _eq  (operacion_equiv integer, unidad_academica varchar(5), carrera varchar(5), legajo varchar(15), plan varchar(5), version varchar(5));

INSERT INTO _eq (operacion_equiv, unidad_academica, carrera, legajo, plan, version)
  SELECT operacion_equiv, unidad_academica, carrera, legajo, plan, version 
    FROM mig.sga_equiv_otorgada
GROUP BY 1, 2, 3,4,5, 6;

-- Fijate si esta consulta trae algun registro:
SELECT * FROM mig.sga_equiv_otorgada
  WHERE operacion_equiv IN (SELECT operacion_equiv FROM _eq GROUP BY 1 HAVING COUNT(*)  > 1)
  ORDER BY operacion_equiv,  equivalencia;

DROP TABLE _eq;

Hola:

Me devuelve 8 resultados:
6823;6823;“UNQ”;“H”;“15004”;“E0036”;“2007-04-10”;“T”;“A”;1;“A”;“”;“”;“2003”;“1”;“N”;“A”
10620;6823;“UNQ”;“S”;“15004”;“E0036”;“2007-04-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
6879;6879;“UNQ”;“Q”;“16305”;“E0036”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
10738;6879;“UNQ”;“Q”;“16305”;“E0039”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
10739;6879;“UNQ”;“Q”;“16305”;“E0040”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
10740;6879;“UNQ”;“O”;“16305”;“E0077”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”
10741;6879;“UNQ”;“O”;“16305”;“E0076”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”
10742;6879;“UNQ”;“O”;“16305”;“E0075”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”

Muchas gracias!!!

El problema esta ahi en esos dos trámites de quivalencias.
El 6823 tiene a dos alumnos diferentes:
Carrera “H” , Legajo “15004”
Carrera “S” , Legajo “15004”

¿Podes verificar si se trata de la misma persona en dos carreras y al cual se le otorgó una equivalencias de la misma materia E0036 en cada carrera?

Para el trámite de equivalencia Nro 6879, pareciera que se le otorgó equivalencias al Legajo 16305 en la carrera “Q”, en diferentes materias, pero lo raro alli que a algunas materias se las otorgó para el plan de estudios 2005 y otras materias para el 2007, es asi?

Como en los dos trámites de equivalencias, el alumno y el plan y version de plan de estudios en el que se registró la equivalencia no es el mismo para todas las equivalencias de este trámite es el motivo del error que te da la migración, ya que espera recuperar un solo alumno o un solo alumno en una version de plan de estudios pero recupera mas de uno.

¿Podes verificar si esos tramites de equivalencias estan bien, y si es asi si fueron cargados por el sistema, fueron generados automáticamente (por ingreso en una nueva carrera, por cambio de plan de estudios, etc.)?

Hola:

[b]El 6823 tiene a dos alumnos diferentes:
Carrera “H” , Legajo “15004”
Carrera “S” , Legajo “15004”

¿Podes verificar si se trata de la misma persona en dos carreras y al cual se le otorgó una equivalencias de la misma materia E0036 en cada carrera?[/b]

Se trata de la misma persona y le dieron la equivalencia de la misma materia en dos carrera distintas (H - Licenciatura en Educación y S - Profesorado de Educación), esta equivalencia la hicimos con la migracion de los datos desde el sistema anterior.

Para el trámite de equivalencia Nro 6879, pareciera que se le otorgó equivalencias al Legajo 16305 en la carrera “Q”, en diferentes materias, pero lo raro alli que a algunas materias se las otorgó para el plan de estudios 2005 y otras materias para el 2007, es asi?

El plan 2007 es de la carrera Q, el el 2005 de la carrera O, esta equivalencia la hicimos con la migracion de los datos desde el sistema anterior.

Le pusimos en ambos casos como acta/resolucion la palabra “migracion”.

Muchas gracias!!!

Hola:

Lo solucione de la siguiente forma:

– Se agrego en sga_equiv_operac operacion_equiv = ‘13946’, igual a operacion_equiv = ‘6823’.
– Se agrego en sga_equiv_operac operacion_equiv = ‘13947’, igual a operacion_equiv = ‘6879’.

–Modificado:
– 10620;6823;“UNQ”;“S”;“15004”;“E0036”;“2007-04-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– por
– 10620;13946;“UNQ”;“S”;“15004”;“E0036”;“2007-04-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”

– 6879;6879;“UNQ”;“Q”;“16305”;“E0036”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– 10738;6879;“UNQ”;“Q”;“16305”;“E0039”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– 10739;6879;“UNQ”;“Q”;“16305”;“E0040”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– por
– 6879;13947;“UNQ”;“Q”;“16305”;“E0036”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– 10738;13947;“UNQ”;“Q”;“16305”;“E0039”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”
– 10739;13947;“UNQ”;“Q”;“16305”;“E0040”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2007”;“1”;“N”;“A”

– Quedaron Iguales:
– 10740;6879;“UNQ”;“O”;“16305”;“E0077”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”
– 10741;6879;“UNQ”;“O”;“16305”;“E0076”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”
– 10742;6879;“UNQ”;“O”;“16305”;“E0075”;“2006-05-10”;“T”;“A”;1;“A”;“”;“”;“2005”;“1”;“N”;“A”

Muchas gracias!!!

Entonces, todos estos casos se dieron por migracion del sistema anterior, no es que fueron generadas automáticamente o fueron ingresadas desde la operación de Otorgar Equivalencias del sistema, no?

Si modificaremos el script de migracion para que contemple estos casos y divida en n-tramites de equivalencias si encuentra estas diferencias…

Hola:

Se generaron por migracion del sistema anterior.

Muchas gracias!!!

Pablo, ya ajustamos los scripts para que contemple estos casos como le que tenian uds. Si necesitas los mismos te los enviamos.
Saludos.

Dale pasamelo. Muchas gracias!!!