sql Adicióndecondiciónenbloque de concepto OfPeAsigEv para distinguished de manera adecuad

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Adicióndecondiciónenbloque de concepto OfPeAsigEv para distinguished de manera adecuad相关的知识,希望对你有一定的参考价值。

----------------------------INICIO PROCEDIMIENTO ------------------------
IF OBJECT_ID('spValidaExistenciaEntCombinada', 'P') IS NOT NULL
      DROP PROC spValidaExistenciaEntCombinada
GO

CREATE PROCEDURE spValidaExistenciaEntCombinada
    @sValoresTexto lista4VarcharMed READONLY ,
    @sConcepto VARCHAR(20)
/* --------------------------------------------------------------------------------------------------------------
   FECHA	   |    AUTOR		|	DESCRIPCION
11/Abr/2017    | Luis Bernal	| Se agrega condición, en concepto OfPeAsigEv, para identificar adecuadamente asignaturas con misma clave pero en diferente Plan de Estudios
--------------------------------------------------------------------------------------------------------------*/
AS
    BEGIN 	
        SET NOCOUNT ON; 	

        DECLARE @TRM TABLE
            (
              sTexto VARCHAR(200) ,
              sTexto1 VARCHAR(200) ,
              sTexto2 VARCHAR(200) ,
              sTexto3 VARCHAR(200) ,
              iLlave SMALLINT ,
              iLlave1 SMALLINT ,
              iLlave2 SMALLINT ,
              iLlave3 BIGINT
            );

        IF @sConcepto = 'PlantelPlanOfPer'
            BEGIN
                INSERT  INTO @TRM
                        ( sTexto ,
                          sTexto1 ,
                          sTexto2 ,
                          sTexto3 ,
                          iLlave ,
                          iLlave1 ,
                          iLlave2 ,
                          iLlave3
	                    )
                        SELECT  vals.texto AS sTexto --plantel 	
                                ,
                                vals.texto1 AS sTexto1 --plan 	
                                ,
                                vals.texto2 AS sTexto2--oferta educativa 	
                                ,
                                vals.texto3 AS sTexto3 --periodo 	
                                ,
                                plant.idPlantel AS iLlave ,
                                ofertaPlan.idPlan AS iLlave1 ,
                                ofertaPlan.idOfEduc AS iLlave2 ,
                                per.iFolio AS iLlave3
                        FROM    @sValoresTexto vals
                                LEFT JOIN Cat_Planteles plant ON plant.sNombre COLLATE Latin1_General_CI_AI = vals.texto
                                OUTER APPLY ( SELECT    CAST(Ctrl_PlantelesOfEduc.idPlan AS SMALLINT) AS idPlan ,
                                                        Ctrl_PlantelesOfEduc.idOfEduc
                                              FROM      Cat_OfEduc
                                                        INNER JOIN Ctrl_PlantelesOfEduc ON Ctrl_PlantelesOfEduc.idPlantel = plant.idPlantel
                                                                                           AND Ctrl_PlantelesOfEduc.idOfEduc = Cat_OfEduc.idOfEduc
                                                                                           AND Cat_OfEduc.sAbreviatura COLLATE Latin1_General_CI_AI = vals.texto2
                                                        INNER JOIN Cat_Planes ON Cat_Planes.idPlan = Ctrl_PlantelesOfEduc.idPlan
                                                                                 AND SUBSTRING(Cat_Planes.sPlan, 0, 4) COLLATE Latin1_General_CI_AI = SUBSTRING(vals.texto1,
                                                                                                                                                0, 4)
                                            ) ofertaPlan
                                LEFT JOIN Ctrl_Periodos per ON per.idPlan = ofertaPlan.idPlan
                                                               AND per.sAbPeriodo COLLATE Latin1_General_CI_AI = vals.texto3; 	
            END;
                         
        ELSE
            IF @sConcepto = 'PlantelPlanPeGrupo'
                BEGIN	
	 
                    INSERT  INTO @TRM
                            ( sTexto ,
                              sTexto1 ,
                              sTexto2 ,
                              sTexto3 ,
                              iLlave ,
                              iLlave1 ,
                              iLlave2 ,
                              iLlave3
	                        )
                            SELECT  vals.texto AS sTexto --plantel 	
                                    ,
                                    vals.texto1 AS sTexto1 --plan 	
                                    ,
                                    vals.texto2 AS sTexto2 --plan de estudios 	
                                    ,
                                    vals.texto3 AS sTexto3 --grupo 	
                                    ,
                                    plant.idPlantel AS iLlave ,
                                    CASE WHEN planes.idPlan IS NOT NULL THEN CAST(planes.idPlan AS SMALLINT)
                                    END AS iLlave1 ,
                                    grupo.idPlanEstudios AS iLlave2 ,
                                    grupo.idGrupo AS iLlave3
                            FROM    @sValoresTexto vals
                                    LEFT JOIN Cat_Planteles plant ON plant.sNombre COLLATE Latin1_General_CI_AI = vals.texto
                                    LEFT JOIN Cat_Planes planes ON SUBSTRING(planes.sPlan, 0, 4) COLLATE Latin1_General_CI_AI = SUBSTRING(vals.texto1, 0, 4)
                                    OUTER APPLY ( SELECT    plantelesoferta.idPlan ,
                                                            grp.idPlanEstudios ,
                                                            grp.idGrupo
                                                  FROM      Ctrl_Grupos grp
                                                            INNER JOIN Cat_PlanEstudios planest ON grp.sNombre COLLATE Latin1_General_CI_AI = vals.texto3
                                                                                                   AND planest.sNombre + ' ' + planest.sVersion COLLATE Latin1_General_CI_AI = vals.texto2
                                                                                                   AND grp.idPlanEstudios = planest.idPlanEstudios
                                                            INNER JOIN Ctrl_PlantelesOfEduc plantelesoferta ON plantelesoferta.idPlantel = plant.idPlantel
                                                                                                               AND plantelesoferta.idOfEduc = planest.idOfEduc
                                                                                                               AND plantelesoferta.idPlan = planest.idPlan
                                                ) grupo; 	
                END;
                                              
            ELSE
                IF @sConcepto = 'OfPeAsigEv'
                    BEGIN
                        DECLARE @iTroncoComun VARCHAR(50)= 0;
                        SELECT  @iTroncoComun = CSP.sValor
                        FROM    dbo.Cat_SistemaParametros CSP
                        WHERE   CSP.idParametro = 47;
                        INSERT  INTO @TRM
                                ( sTexto ,
                                  sTexto1 ,
                                  sTexto2 ,
                                  sTexto3 ,
                                  iLlave ,
                                  iLlave1 ,
                                  iLlave2 ,
                                  iLlave3
	                            )
                                SELECT  vals.texto AS sTexto --oferta educativa 	
                                        ,
                                        vals.texto1 AS sTexto1 --plan estudios 	
                                        ,
                                        vals.texto2 AS sTexto2 -- asignatura 	
                                        ,
                                        vals.texto3 AS sTexto3 -- evaluacion 	
                                        ,
                                        ofeduc.idOfEduc AS iLlave ,
                                        planest.idPlanEstudios AS iLlave1 ,
                                        asignatura.idAsignatura AS iLlave2 ,
                                        evs.idEvaluacion AS iLlave3
                                FROM    @sValoresTexto vals
                                        LEFT JOIN Cat_OfEduc ofeduc ON ofeduc.sAbreviatura COLLATE Latin1_General_CI_AI = vals.texto
                                        LEFT JOIN Cat_PlanEstudios planest ON planest.sNombre + ' ' + planest.sVersion COLLATE Latin1_General_CI_AI = vals.texto1
                                                                              AND planest.idOfEduc = ofeduc.idOfEduc
                                        OUTER APPLY ( SELECT    asig.idAsignatura ,
                                                                planestdet.idFormEvaluacion
                                                      FROM      dbo.Cat_Asignaturas AS asig
                                                                INNER JOIN dbo.Ctrl_PlanEstudios AS planestdet ON planestdet.idAsignatura = asig.idAsignatura
                                                      WHERE     asig.sClave + '|' + asig.sAsignatura COLLATE Latin1_General_CI_AI = vals.texto2
																AND planestdet.idPlanEstudios = (SELECT idPlanEstudios 
																								 FROM dbo.Cat_PlanEstudios 
																								 WHERE sNombre + ' ' + sVersion COLLATE Latin1_General_CI_AI = vals.texto1)	-- Se agrega condición para filtrar adecuadamente asignaturas con misma clave 
																																											-- pero con diferentes planes de estudio. BIT/IAM-1444 10/Abr/2017
                                                                AND ( ( planestdet.idPlanEstudios = planest.idPlanEstudios
                                                                        AND @iTroncoComun = 0
                                                                      )
                                                                      OR @iTroncoComun = 1
                                                                    )
                                                    ) asignatura-- se agrego este and porque no traia la asignatua al plan de estudios correspondiente
                                        LEFT JOIN Ctrl_FormEvaluacion evs ON evs.idFormEvaluacion = CASE WHEN asignatura.idFormEvaluacion IS NULL
                                                                                                         THEN planest.idFormEvaluacion
                                                                                                         ELSE asignatura.idFormEvaluacion
                                                                                                    END
                                                                             AND ( evs.sAbreviatura COLLATE Latin1_General_CI_AI = vals.texto3
                                                                                   OR evs.sNombre COLLATE Latin1_General_CI_AI = vals.texto3
                                                                                 ); 
                    END;
        
                ELSE
                    IF @sConcepto = 'AsigPlanEstudios'
                        BEGIN
		  /*------------------------------------------------------------------------------------------------------------------------------------*/
                            DECLARE @planestudiosaux VARCHAR(200) ,
                                @asignaturaaux VARCHAR(200),
                                @plantelaux VARCHAR(200) ,
                                @ofeducaux VARCHAR(200) ,
                                @planestudiosaux2 VARCHAR(200) ,
                                @bValido BIT ,
                                @idPlanEstudios SMALLINT ,
                                @idAsignatura SMALLINT ,
                                @idPlantel SMALLINT ,
                                @idOferta SMALLINT;
		            
                            DECLARE cCursor CURSOR LOCAL
                            FOR
                                SELECT  vals.texto ,--plan deestudios
                                        vals.texto1 ,--asignatura
                                        vals.texto2 ,--plantel
                                        vals.texto3 --ofeduc
                                FROM    @sValoresTexto vals; 
		          
                            DECLARE @TR TABLE
                                (
                                  texto1 VARCHAR(200) ,
                                  texto2 VARCHAR(200) ,
                                  texto3 VARCHAR(200) ,
                                  texto4 VARCHAR(200) ,
                                  idPlanEstudios SMALLINT NOT NULL ,
                                  idAsignatura SMALLINT NOT NULL ,
                                  idPlantel SMALLINT NOT NULL ,
                                  idOferta SMALLINT NOT NULL
                                );
                            SET @bValido = 1;
                            OPEN cCursor;
                            FETCH cCursor INTO @planestudiosaux, @asignaturaaux, @plantelaux, @ofeducaux;
		          				  --@idFamilia int,@sRazonSocial varchar(250)
		      
                            WHILE ( @@FETCH_STATUS = 0 )
                                BEGIN
                                    SET @planestudiosaux2 = '';
									
                                    SELECT  @planestudiosaux2 = CONCAT(CPE2.sNombre, ' ', CPE2.sVersion) ,
                                            @idPlanEstudios = CPE2.idPlanEstudios
                                    FROM    dbo.Ctrl_PlanEstudios CPE
                                            INNER JOIN dbo.Cat_Asignaturas CA ON CA.idAsignatura = CPE.idAsignatura
                                            INNER JOIN dbo.Cat_PlanEstudios CPE2 ON CPE2.idPlanEstudios = CPE.idPlanEstudios
                                    WHERE   CA.sClave = @asignaturaaux
                                            AND CONCAT(CPE2.sNombre, ' ', CPE2.sVersion) = @planestudiosaux;

                                    IF @planestudiosaux2 = ''
                                        BEGIN
                                            INSERT  INTO @TR
                                                    ( texto1 ,
                                                      texto2 ,
                                                      texto3 ,
                                                      texto4 ,
                                                      idPlanEstudios ,
                                                      idAsignatura ,
                                                      idPlantel ,
                                                      idOferta
											        )
                                            VALUES  ( @planestudiosaux ,
                                                      NULL ,
                                                      @plantelaux ,
                                                      @ofeducaux ,
                                                      CAST(0 AS SMALLINT) ,
                                                      CAST(0 AS SMALLINT) ,
                                                      CAST(0 AS SMALLINT) ,
                                                      CAST(0 AS BIGINT)
													 );
                                        END;
                                    ELSE
                                        BEGIN
					
                                            IF @planestudiosaux2 != @planestudiosaux
                                                BEGIN
                                                    INSERT  INTO @TR
                                                            ( texto1 ,
                                                              texto2 ,
                                                              texto3 ,
                                                              texto4 ,
                                                              idPlanEstudios ,
                                                              idAsignatura ,
                                                              idPlantel ,
                                                              idOferta
                                                            )
                                                    VALUES  ( NULL ,
                                                              @asignaturaaux ,
                                                              @plantelaux ,
                                                              @ofeducaux ,
                                                              CAST(@idPlanEstudios AS SMALLINT) ,
                                                              CAST(0 AS SMALLINT) ,
                                                              CAST(0 AS SMALLINT) ,
                                                              CAST(0 AS BIGINT)
															 );	
                                                END;

                                            ELSE
                                                BEGIN
                                                    INSERT  INTO @TR
                                                            ( texto1 ,
                                                              texto2 ,
                                                              texto3 ,
                                                              texto4 ,
                                                              idPlanEstudios ,
                                                              idAsignatura ,
                                                              idPlantel ,
                                                              idOferta
													        )
                                                    VALUES  ( @planestudiosaux ,
                                                              @asignaturaaux ,
                                                              @plantelaux ,
                                                              @ofeducaux ,
                                                              CAST(@idPlanEstudios AS SMALLINT) ,
                                                              CAST(0 AS SMALLINT) ,
                                                              CAST(0 AS SMALLINT) ,
                                                              CAST(0 AS BIGINT)
															 );
                                                END;
                    
                                        END;
                    
		            
                                    FETCH cCursor INTO @planestudiosaux, @asignaturaaux, @plantelaux, @ofeducaux;
                                END;
		      
                            CLOSE cCursor;
                            DEALLOCATE cCursor;
		      				  /*------------------------------------------------------------------------------------------------------------------------------------*/
                            INSERT  INTO @TRM
                                    ( sTexto ,
                                      sTexto1 ,
                                      sTexto2 ,
                                      sTexto3 ,
                                      iLlave ,
                                      iLlave1 ,
                                      iLlave2 ,
                                      iLlave3
	                                )
                                    SELECT  T.texto1 ,
                                            T.texto2 ,
                                            T.texto3 ,
                                            T.texto4 ,
                                            T.idPlanEstudios ,
                                            T.idAsignatura ,
                                            T.idPlantel ,
                                            T.idOferta
                                    FROM    @TR T; 
                        END;
        SELECT  T.sTexto ,
                T.sTexto1 ,
                T.sTexto2 ,
                T.sTexto3 ,
                T.iLlave ,
                T.iLlave1 ,
                T.iLlave2 ,
                T.iLlave3
        FROM    @TRM T;   	
    END;

以上是关于sql Adicióndecondiciónenbloque de concepto OfPeAsigEv para distinguished de manera adecuad的主要内容,如果未能解决你的问题,请参考以下文章

sql Adicióndeenvíodemensajes en Bitacoraenducaciónincontina - SPRINT 5 BIT / AM-84

sql Adiciónderegistro en bitacora de CapturadeCalificaciónEC - SPRINT 5 BIT / AM-84

sql Adiciónderegistro en bitacora de Iniciodesesión - SPRINT 5 BIT / AM-84

sql AdicióndeEquivalencias anteriormente registradas en Importador de Calificaciones - BIT /

sql adiciónderegistro en Bitacora de calificaciones(respectrando losdiferentesorígenesdeca

sql Adicióndecolumnas para registro de nombre y puesto de responsable de firmar certificados