sql BIT / IAM-1867 - spValidaExistenciaEntCombinada - Se agrega sNombreOficial del Periodo ya qu
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql BIT / IAM-1867 - spValidaExistenciaEntCombinada - Se agrega sNombreOficial del Periodo ya qu相关的知识,希望对你有一定的参考价值。
----------------------------INICIO PROCEDIMIENTO ------------------------
IF OBJECT_ID('spValidaExistenciaEntCombinada', 'P') IS NOT NULL
DROP PROC spValidaExistenciaEntCombinada
GO
CREATE PROCEDURE [dbo].[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
19/Abr/2017 | Luis Bernal | Se agrega join con Cat_Planteles, en concepto PlantelPlanPeGrupo, para delimitar la obtencion de los grupos con respecto al Plantel especificado
03/Jul/2017 | Luis Bernal | BIT/IAM-1867 - Se agrega sNombreOficial del Periodo ya que se agregó a la plantilla, en el bloque PlantelPlanOfPer
--------------------------------------------------------------------------------------------------------------*/
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 + ' ' + per.sNombreOficial COLLATE Latin1_General_CI_AI = vals.texto3; --* BIT/IAM-1867 - Se agrega sNombreOficial del Periodo ya que se agregó a la plantilla
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 dbo.Cat_Planteles AS cp ON cp.idPlantel = grp.idPlantel AND vals.texto = cp.sNombre --Se agrega este JOIN para delimitar los grupos pertenecientes a al platel especificado 19/Abr/17
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 BIT / IAM-1867 - spValidaExistenciaEntCombinada - Se agrega sNombreOficial del Periodo ya qu的主要内容,如果未能解决你的问题,请参考以下文章
sql BIT / IAM-1758 - sp_CE_ListarCalificacionesAsigRubSubRubCompletasAlumno - Se adiciona JOIN c
sql BIT / IAM-2081 - sp2CES_ALU_ObtenerInfoInscripVigente - Se agrega para obtener la oferta edu
跪求SQL Server 2008 R2 Standard (64-bit) x64下载地址。
windows server 2003 64 位能不能支持 SQL 2000? 是需要安装SQL sp4的补丁吗? 顺求 2003 64位系统..