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