Personally I did a function in SQLServer which does control a graph for me in C #, this function brings me all the students from a referring school. The function is as follows:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[GRF_DESEMPENHO_ANUAL](@P_GMUNICIPIO_ID INT, @P_EDEMPRESA_ID INT, @P_SECRETARIA_ID INT, @P_ANO CHAR(4), @P_ESCOLA_ID INT, @P_CURSO_ID INT, @P_MODALIDADE_ID INT, @P_SERIE_ID INT, @P_TURNO_ID INT, @P_TURMA_ID INT, @P_VALOR_ZERO CHAR(1))
RETURNS @SWT_GRF_DESEMPENHO_ANUAL TABLE
(
EDEMPRESA_ID INT,
EMPRESA CHAR(60),
GMUNICIPIO_ID INT,
MUNICIPIO CHAR(40),
SECRETARIA_ID INT,
SECRETARIA CHAR(50),
ANO CHAR(4),
ESCOLA_ID INT,
ESCOLA VARCHAR(150),
CURSO_ID INT,
CURSO CHAR(100),
MODALIDADE_ID INT,
MODALIDADE CHAR(100),
SERIE_ID INT,
SERIE_FORMAT CHAR(30),
TURMA_ID INT,
LEGENDA CHAR(2),
TURNO_ID INT,
TURNO CHAR(20),
SITUACAO VARCHAR(25),
TOTAL INT,
TOTAL_GERAL INT,
TOTAL_REAL INT
)
AS
BEGIN
DECLARE @V_SERIE_HIST CHAR(3)
DECLARE @V_GRAU CHAR(2)
DECLARE @EDEMPRESA_ID INT
DECLARE @EMPRESA CHAR(60)
DECLARE @GMUNICIPIO_ID INT
DECLARE @MUNICIPIO CHAR(40)
DECLARE @SECRETARIA_ID INT
DECLARE @SECRETARIA CHAR(50)
DECLARE @ANO CHAR(4)
DECLARE @ESCOLA_ID INT
DECLARE @ESCOLA VARCHAR(150)
DECLARE @CURSO_ID INT
DECLARE @CURSO CHAR(100)
DECLARE @MODALIDADE_ID INT
DECLARE @MODALIDADE CHAR(100)
DECLARE @SERIE_ID INT
DECLARE @SERIE_FORMAT CHAR(30)
DECLARE @TURMA_ID INT
DECLARE @LEGENDA CHAR(2)
DECLARE @TURNO_ID INT
DECLARE @TURNO CHAR(20)
DECLARE @SITUACAO VARCHAR(25)
DECLARE @TOTAL INT
DECLARE @TOTAL_GERAL INT
DECLARE @TOTAL_REAL INT
DECLARE @SWV_cursor_var1 CURSOR
DECLARE @SWV_cursor_var2 CURSOR
SET @SWV_cursor_var1 = CURSOR
FOR SELECT M.ESCOLA_ID, E.ESCOLA, M.SERIE_ID, S.SERIE_HIST, M.TURMA_ID,
M.TURNO_ID, TN.TURNO, M.EDEMPRESA_ID, M.GMUNICIPIO_ID, M.ANO,
M.SECRETARIA_ID, EM.EMPRESA, MU.MUNICIPIO, SE.SECRETARIA, S.GRAU,
S.MODALIDADE_ID, TM.LEGENDA, S.CURSO_ID, CM.MODALIDADE, C.CURSO
FROM ED_MATRICUL M
LEFT JOIN ED_ESCOLAS E ON (M.EDEMPRESA_ID = E.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = E.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = E.SECRETARIA_ID)
AND (M.ESCOLA_ID = E.ESCOLA_ID)
LEFT JOIN ED_SERIES S ON (M.EDEMPRESA_ID = S.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = S.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = S.SECRETARIA_ID)
AND (M.SERIE_ID = S.SERIE_ID)
LEFT JOIN ED_CURSOMODALIDADE CM ON (S.EDEMPRESA_ID = CM.EDEMPRESA_ID)
AND (S.GMUNICIPIO_ID = CM.GMUNICIPIO_ID) AND (S.SECRETARIA_ID = CM.SECRETARIA_ID)
AND (S.CURSO_ID = CM.CURSO_ID) AND (S.MODALIDADE_ID = CM.MODALIDADE_ID)
LEFT JOIN ED_CURSO C ON (S.EDEMPRESA_ID = C.EDEMPRESA_ID)
AND (S.GMUNICIPIO_ID = C.GMUNICIPIO_ID) AND (S.SECRETARIA_ID = C.SECRETARIA_ID)
AND (S.CURSO_ID = C.CURSO_ID)
LEFT JOIN ED_TURMAS TM ON (M.EDEMPRESA_ID = TM.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = TM.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = TM.SECRETARIA_ID)
AND (M.ESCOLA_ID = TM.ESCOLA_ID) AND (M.SERIE_ID = TM.SERIE_ID)
AND (M.TURNO_ID = TM.TURNO_ID) AND (M.ANO = TM.ANO) AND (M.TURMA_ID = TM.TURMA_ID)
LEFT JOIN ED_TURNO TN ON (M.EDEMPRESA_ID = TN.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = TN.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = TN.SECRETARIA_ID)
AND (M.TURNO_ID = TN.TURNO_ID)
LEFT JOIN ED_SECRETARIA SE ON (M.EDEMPRESA_ID = SE.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = SE.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = SE.SECRETARIA_ID)
LEFT JOIN ED_EMPRESA EM ON (SE.EDEMPRESA_ID = EM.EDEMPRESA_ID)
LEFT JOIN GMUNICIPIO MU ON (SE.GMUNICIPIO_ID = MU.GMUNICIPIO_ID)
WHERE ((M.GMUNICIPIO_ID = @P_GMUNICIPIO_ID) OR (@P_GMUNICIPIO_ID IS NULL))
AND ((M.EDEMPRESA_ID = @P_EDEMPRESA_ID) OR (@P_EDEMPRESA_ID IS NULL))
AND ((M.SECRETARIA_ID = @P_SECRETARIA_ID) OR (@P_SECRETARIA_ID IS NULL))
AND M.ANO = @P_ANO
AND ((M.ESCOLA_ID = @P_ESCOLA_ID) OR (@P_ESCOLA_ID IS NULL))
AND ((S.CURSO_ID = @P_CURSO_ID) OR (@P_CURSO_ID IS NULL))
AND ((S.MODALIDADE_ID = @P_MODALIDADE_ID) OR (@P_MODALIDADE_ID IS NULL))
AND ((M.SERIE_ID = @P_SERIE_ID) OR (@P_SERIE_ID IS NULL))
AND ((M.TURNO_ID = @P_TURNO_ID) OR (@P_TURNO_ID IS NULL))
AND ((M.TURMA_ID = @P_TURMA_ID) OR (@P_TURMA_ID IS NULL))
GROUP BY M.ESCOLA_ID,E.ESCOLA,M.SERIE_ID,S.SERIE_HIST,M.TURMA_ID,M.TURNO_ID,TN.TURNO,
M.EDEMPRESA_ID,M.GMUNICIPIO_ID,M.ANO,M.SECRETARIA_ID,EM.EMPRESA,
MU.MUNICIPIO,SE.SECRETARIA,S.GRAU,S.MODALIDADE_ID,TM.LEGENDA,S.CURSO_ID,
CM.MODALIDADE,C.CURSO
ORDER BY M.EDEMPRESA_ID,M.GMUNICIPIO_ID,M.SECRETARIA_ID,M.ESCOLA_ID,S.CURSO_ID,
S.MODALIDADE_ID,M.SERIE_ID,M.TURNO_ID,M.TURMA_ID
OPEN @SWV_cursor_var1
FETCH NEXT FROM @SWV_cursor_var1 INTO @ESCOLA_ID,@ESCOLA,@SERIE_ID,@V_SERIE_HIST,@TURMA_ID,@TURNO_ID,@TURNO,
@EDEMPRESA_ID,@GMUNICIPIO_ID,@ANO,@SECRETARIA_ID,@EMPRESA,@MUNICIPIO,@SECRETARIA,
@V_GRAU,@MODALIDADE_ID,@LEGENDA,@CURSO_ID,@MODALIDADE,@CURSO
while @@FETCH_STATUS = 0
begin
SELECT @SERIE_FORMAT = SERIE_FORMAT FROM SERIE_HISTORICO(@V_SERIE_HIST,@V_GRAU) AS SERIE_HISTORICO
SET @TOTAL_REAL = 0
SELECT @TOTAL_REAL = COUNT(1) FROM ED_MATRICUL M
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '0'
SET @TOTAL_GERAL = 0
SELECT @TOTAL_GERAL = COUNT(1) FROM ED_MATRICUL M
LEFT JOIN ED_FIC_IND F ON (M.EDEMPRESA_ID = F.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = F.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = F.SECRETARIA_ID)
AND (M.MATRICULA_ID = F.MATRICULA_ID)
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO not in ('5')
SET @SWV_cursor_var2 = CURSOR
FOR SELECT CAST('Aprovados' AS VARCHAR(25)) AS SITUACAO, COUNT(1) AS TOTAL
FROM ED_MATRICUL M
LEFT JOIN ED_FIC_IND F ON (M.EDEMPRESA_ID = F.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = F.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = F.SECRETARIA_ID)
AND (M.MATRICULA_ID = F.MATRICULA_ID)
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '0'
AND F.SITU_FINAL = 'S' UNION ALL SELECT CAST('Rep. Desempenho' AS VARCHAR(25)), COUNT(1)
FROM ED_MATRICUL M
LEFT JOIN ED_FIC_IND F ON (M.EDEMPRESA_ID = F.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = F.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = F.SECRETARIA_ID)
AND (M.MATRICULA_ID = F.MATRICULA_ID)
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '0'
AND F.SITU_FINAL = 'N' UNION ALL SELECT CAST('Rep. Falta' AS VARCHAR(25)), COUNT(1)
FROM ED_MATRICUL M
LEFT JOIN ED_FIC_IND F ON (M.EDEMPRESA_ID = F.EDEMPRESA_ID)
AND (M.GMUNICIPIO_ID = F.GMUNICIPIO_ID) AND (M.SECRETARIA_ID = F.SECRETARIA_ID)
AND (M.MATRICULA_ID = F.MATRICULA_ID)
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '0'
AND F.SITU_FINAL = 'F' UNION ALL SELECT CAST('Transf. Rede' AS VARCHAR(25)), COUNT(1)
FROM ED_MATRICUL M
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '3' UNION ALL SELECT CAST('Transf. Int.' AS VARCHAR(25)), COUNT(1)
FROM ED_MATRICUL M
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '1' UNION ALL SELECT CAST('Desistente' AS VARCHAR(25)), COUNT(1)
FROM ED_MATRICUL M
WHERE M.EDEMPRESA_ID = @EDEMPRESA_ID
AND M.GMUNICIPIO_ID = @GMUNICIPIO_ID
AND M.SECRETARIA_ID = @SECRETARIA_ID
AND M.ANO = @ANO
AND M.ESCOLA_ID = @ESCOLA_ID
AND M.SERIE_ID = @SERIE_ID
AND M.TURNO_ID = @TURNO_ID
AND M.TURMA_ID = @TURMA_ID
AND M.SITUACAO = '4'
OPEN @SWV_cursor_var2
FETCH NEXT FROM @SWV_cursor_var2 INTO @SITUACAO,@TOTAL
while @@FETCH_STATUS = 0
begin
IF (@P_VALOR_ZERO = '0')
BEGIN
IF (@TOTAL > 0)
INSERT INTO @SWT_GRF_DESEMPENHO_ANUAL VALUES(@EDEMPRESA_ID, @EMPRESA, @GMUNICIPIO_ID, @MUNICIPIO, @SECRETARIA_ID, @SECRETARIA, @ANO, @ESCOLA_ID, @ESCOLA, @CURSO_ID, @CURSO, @MODALIDADE_ID, @MODALIDADE, @SERIE_ID, @SERIE_FORMAT, @TURMA_ID, @LEGENDA, @TURNO_ID, @TURNO, @SITUACAO, @TOTAL, @TOTAL_GERAL, @TOTAL_REAL)
END
ELSE IF (@P_VALOR_ZERO = '1')
INSERT INTO @SWT_GRF_DESEMPENHO_ANUAL VALUES(@EDEMPRESA_ID, @EMPRESA, @GMUNICIPIO_ID, @MUNICIPIO, @SECRETARIA_ID, @SECRETARIA, @ANO, @ESCOLA_ID, @ESCOLA, @CURSO_ID, @CURSO, @MODALIDADE_ID, @MODALIDADE, @SERIE_ID, @SERIE_FORMAT, @TURMA_ID, @LEGENDA, @TURNO_ID, @TURNO, @SITUACAO, @TOTAL, @TOTAL_GERAL, @TOTAL_REAL)
SET @TOTAL_GERAL = 0
SET @TOTAL_REAL = 0
FETCH NEXT FROM @SWV_cursor_var2 INTO @SITUACAO,@TOTAL
end
CLOSE @SWV_cursor_var2
DEALLOCATE @SWV_cursor_var2
FETCH NEXT FROM @SWV_cursor_var1 INTO @ESCOLA_ID,@ESCOLA,@SERIE_ID,@V_SERIE_HIST,@TURMA_ID,@TURNO_ID,@TURNO,
@EDEMPRESA_ID,@GMUNICIPIO_ID,@ANO,@SECRETARIA_ID,@EMPRESA,@MUNICIPIO,@SECRETARIA,
@V_GRAU,@MODALIDADE_ID,@LEGENDA,@CURSO_ID,@MODALIDADE,@CURSO
end
CLOSE @SWV_cursor_var1
DEALLOCATE @SWV_cursor_var1
RETURN
END
When I set 0 to the variable @P_VALOR_ZERO, it brings me the correct values, but when I pass the value 1 it brings the wrong value, how do I get the value 1 to bring the same values as when I pass the value 0? Detail: When I pass the value 0, the graph is displayed only when it has value above 0, when I pass the value 1 it displays everything, even values = 0, but it adds something when I pass value 0 and it brings me wrong values .