1. Selecionado os registros de uma tabela(aloc_cand) que nao existem na outra(car_res_le) 2. 3. Email de todos os bancos(concurso) 4. Total geral dos classificados 5. Total de aprovados por cargo 6. select simple com group by e order by 7. 8. Relacao por nome, cargo, num_ficha e nota especifico de classificados 9. Acesso a base de dados SQLServer atraves do VB 10. Select com utilizacao de if no sql 11. Copiando partes de um campo e alterando para caixa alta 12. Copiando partes de um campo e alterando para caixa alta (parte 2) 13. Comparacao entre duas tabelas no query analyzer 1 14. Comparacao entre duas tabelas no query analyzer 2 15. Imprimindo linhas de cores diferentes no access/vb 16. Contando candidatos com mais de uma inscricao 17. seleciona um nome testando e validando o primeiro caracter, e, copiando da segundo posicao para frente 18. Efetuando update num campo com um determinado caracter, substituindo-o por outro ou nao 19. Total de candidatos por sala 20. Para gerar lista de presenca 21. Localizando um caracter em um campo e a definindo outro valor caso verdadeiro (sqlserver) 22. Criando uma procedure para efetuar um update com passagem de parametro 23. Trigger para ao inserir dados em uma tabela, fazer a checagem de determinados dados caracteres proibidos para nomes 24. Depois de uma importacao de cartoes efetuar conferencia 25. Select dos candidatos alocados apos a alocacao 26. Gerar Alocacao 27. Rotina de teste e verificacao das importacoes dos cartoes (conferencia para ver se batem os valores) 28. Procedimento para colocar notas do resultado no ar (proximo passo apos o item 27 acima) 29. Sql para gerar redacao 30. Criterio de classificacao e desempate de grupo de disciplinas (conhecimentos especificos - CES) e lingua portuguesa (LPO), usando uma view no concurso AFPR2004 31. Utilizacao com verificacao, validacao e comparacao de campo 32. Update com select 33. select com select 34. Criterio de classificacao e desempate 35. Transformando linhas de um query em colunas 36. Executando varios sqls baseando-se em opcoes 37. Utilizando insert com select no sqlserver 1. Selecionado os registros de uma tabela(aloc_cand) que nao existem na outra(car_res_le) SELECT Num_Fic, Num_Seq_Car FROM Aloc_Cand WHERE ( Num_Fic NOT IN (SELECT num_fic FROM Car_Res_Le)) ORDER BY Num_Seq_Car; 2. 3. Email de todos os bancos(concurso) SELECT af.eMail FROM afpr2004.dbo.Candidato af WHERE (af.eMail <> '') UNION SELECT ce.eMail FROM cefet2004.dbo.Candidato ce WHERE (ce.eMail <> '') UNION SELECT ceni.eMail FROM cefetni2004.dbo.Candidato ceni WHERE (ceni.eMail <> '') UNION SELECT cn.eMail FROM cnen2004.dbo.Candidato cn WHERE cn.eMail <> '' UNION SELECT con.eMail FROM conab2004.dbo.Candidato con WHERE con.eMail <> '' UNION SELECT conj.eMail FROM conab2004j.dbo.Candidato conj WHERE conj.eMail <> '' UNION SELECT epr.eMail FROM ectampr2004.dbo.Candidato epr WHERE epr.eMail <> '' UNION SELECT ego.eMail FROM ectgo2004.dbo.Candidato ego WHERE ego.eMail <> '' UNION SELECT emt.eMail FROM ectmt2004.dbo.Candidato emt WHERE emt.eMail <> '' UNION SELECT emt1.eMail FROM ectmt2004_1.dbo.Candidato emt1 WHERE emt1.eMail <> '' UNION SELECT ib.eMail FROM ibge2004.dbo.Candidato ib WHERE ib.eMail <> '' UNION SELECT pa.eMail FROM pmmac2004.dbo.Candidato pa WHERE pa.eMail <> '' UNION SELECT pd.eMail FROM prodaub2004.dbo.Candidato pd WHERE pd.eMail <> '' UNION SELECT s1.eMail FROM satuba012004.dbo.Candidato s1 WHERE s1.eMail <> '' UNION SELECT s2.eMail FROM satuba022004.dbo.Candidato s2 WHERE s2.eMail <> '' UNION SELECT t4.eMail FROM trf2004.dbo.Candidato t4 WHERE t4.eMail <> '' UNION SELECT t3.eMail FROM trt2003.dbo.Candidato t3 WHERE t3.eMail <> '' UNION SELECT tt.eMail FROM trt2004.dbo.Candidato tt WHERE tt.eMail <> '' UNION SELECT tp.eMail FROM trtpr2003.dbo.Candidato tp WHERE tp.eMail <> '' UNION SELECT tr.eMail FROM trtrj2004.dbo.Candidato tr WHERE tr.eMail <> '' UNION SELECT ro.eMail FROM trtro2004.dbo.Candidato ro WHERE ro.eMail <> '' 4. Total geral dos classificados select count(cg.cod) from candidato c, classificacao cla, cargo cg where c.num_ficha = cla.num_ficha and c.cod_cargo = cg.cod and cla.flag_class = 'S' group by cg.cod SELECT Cargo.Nome AS Cargo, (Candidato.num_ficha) AS Inscricao FROM Candidato INNER JOIN Opcao_Local ON Candidato.Opcao_Local = Opcao_Local.Cod INNER JOIN Cargo ON Candidato.Cod_Cargo = Cargo.Cod INNER JOIN Classificacao ON Candidato.num_ficha = Classificacao.Num_Ficha WHERE Candidato.Flag_Exclusao = 'N' and Classificacao.Flag_Class = 'S' 5. Total de aprovados por cargo SELECT Cargo.Nome AS Cargo, Count(Candidato.num_ficha) AS Inscricao FROM Candidato INNER JOIN Opcao_Local ON Candidato.Opcao_Local = Opcao_Local.Cod INNER JOIN Cargo ON Candidato.Cod_Cargo = Cargo.Cod INNER JOIN Classificacao ON Candidato.num_ficha = Classificacao.Num_Ficha WHERE Candidato.Flag_Exclusao = 'N' GROUP BY Cargo.Nome, Classificacao.Flag_Class HAVING Classificacao.Flag_Class = 'S' 6. select simple com group by e order by select c.num_ficha from candidato c, cargo cg, prova p, nota_candidato n, provagrupo pg where c.cod_cargo = cg.cod and cg.cod = p.cod_cargo and n.num_ficha = c.num_ficha and n.nota <> 0 and n.cod_prova in(2,1) and pg.cod_prova = n.cod_prova group by c.num_ficha order by c.num_ficha 7. 8. Relacao por nome, cargo, num_ficha e nota especifico de classificados SELECT Candidato.num_ficha AS Inscricao, Candidato.Nome AS Candidato, Candidato.Data_Nasc AS DataNasc, Cargo.Cod AS CodCargo, Cargo.Nome AS Cargo, Classificacao.Nota AS NotaObjetiva, Classificacao.Class_Objetiva AS ClassObjetiva, Classificacao.Flag_Class, Classificacao.Flag_Class_Final FROM (Candidato INNER JOIN Cargo ON Candidato.Cod_Cargo=Cargo.Cod) INNER JOIN Classificacao ON Candidato.num_ficha=Classificacao.Num_Ficha WHERE candidato.num_ficha In ('3000753','3009645','3013634','3005208','3003647','3006581') ORDER BY Cargo.Cod, Candidato.Nome; 9. Acesso a base de dados SQLServer atraves do VB Private Sub Total_Produtos() Dim db As New ADODB.Connection Dim rs As New ADODB.Recordset Dim sql As String Dim total_geral db.ConnectionTimeout = TIME_OUT db.Open "Provider=SQLOLEDB;Data Source=192.168.1.1;DataBase=BCO_2003;", "eliel", "123456" sql = " SELECT COUNT(nome) as total " _ & " FROM Produto " Set rs = db.Execute(sql) total_geral = rs("total") rotulo_total.Caption = Str(total_geral) End Sub 10. Select com utilizacao de if no sql SELECT Cargo.Cod AS CodCargo, Cargo.Nome AS Cargo, Opcao_Vaga.Cod AS CodVaga, Opcao_Vaga.Nome AS Vaga, Candidato.num_ficha AS Inscricao, Candidato.Nome AS Candidato, Candidato.Data_Nasc AS DataNasc, Candidato.Vaga_Deficiente, Classificacao.Flag_Class, Classificacao.Class_Objetiva, Classificacao.Class_Def, Classificacao.Nota, IIf([class_objetiva] Is Null,"Desc.",[class_objetiva] & "°") AS Classificacao FROM Opcao_Vaga INNER JOIN (Cargo INNER JOIN (Candidato INNER JOIN Classificacao ON Candidato.num_ficha = Classificacao.Num_Ficha) ON Cargo.Cod = Candidato.Cod_Cargo) ON Opcao_Vaga.Cod = Candidato.Opcao_Vaga ORDER BY Cargo.Cod, Opcao_Vaga.Cod, Candidato.Nome; 11. Copiando partes de um campo e alterando para caixa alta SELECT CHARINDEX(' ', ltrim( SUBSTRING(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })), CHARINDEX(' ', SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))), { fn LENGTH(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))) }) + ' ') ) AS terceiro_espaco, substring( ltrim(SUBSTRING(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })), CHARINDEX(' ', SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))), { fn LENGTH(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))) })), 1, CHARINDEX(' ', ltrim( SUBSTRING(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })), CHARINDEX(' ', SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))), { fn LENGTH(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))) }) + ' ')) ) as terceiro_nome, SUBSTRING(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })), CHARINDEX(' ', SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))), { fn LENGTH(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) }))) }) + ' ' AS terceiro_completo, substring(SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 1, 1) + LOWER(SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 2, { fn LENGTH(ltrim(c.Nome)) })), 1, CHARINDEX(' ', SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 1, 1) + LOWER(SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 2, { fn LENGTH(c.Nome) })))) as segundo_nome, SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 1, 1) + LOWER(SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 2, { fn LENGTH(ltrim(c.Nome)) })) AS segundo_completo, CHARINDEX(' ', SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 1, 1) + LOWER(SUBSTRING(ltrim(c.Nome), CHARINDEX(' ', ltrim(c.Nome)) + 2, { fn LENGTH(c.Nome) }))) AS segundo_espacao, upper(substring(c.nome,1,1)) + LOWER(SUBSTRING(ltrim(c.Nome), 2, CHARINDEX(' ', ltrim(c.Nome)) - 1)) AS primeiro_nome, CHARINDEX(' ', ltrim(c.Nome)) AS primeiro_espaco, LOWER(SUBSTRING(c.Nome, 1, { fn LENGTH(c.Nome) })) AS completo FROM Classificacao_bkp b INNER JOIN Candidato c ON b.Num_Ficha = c.num_ficha 12. Copiando partes de um campo e alterando para caixa alta (parte 2) SELECT SUBSTRING(c.Nome, 1, 1) + LOWER(SUBSTRING(c.Nome, 2, CHARINDEX(' ', c.Nome) - 1)) + SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })) AS Expr3, SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 1, 1) + LOWER(SUBSTRING(c.Nome, CHARINDEX(' ', c.Nome) + 2, { fn LENGTH(c.Nome) })) AS Expr2, SUBSTRING(c.Nome, 1, 1) + LOWER(SUBSTRING(c.Nome, 2, CHARINDEX(' ', c.Nome) - 1)) AS Expr5, CHARINDEX(' ', c.Nome) AS Expr1, SUBSTRING(c.Nome, 1, 1) + LOWER(SUBSTRING(c.Nome, 2, { fn LENGTH(c.Nome) })) AS Expr5, b.Nota FROM Classificacao_bkp b INNER JOIN Candidato c ON b.Num_Ficha = c.num_ficha 13. Comparacao entre duas tabelas no query analyzer 1 SELECT nn.num_ficha as num_ficha_nova, nn.nota as nota_nova FROM notas_titulos_nova nn WHERE num_ficha In ('3000753','3009645','3013634','3005208','3003647','3006581') SELECT na.num_ficha as num_ficha_antiga, na.nota as nota_antiga FROM notas_titulos_antiga na WHERE num_ficha In ('3000753','3009645','3013634','3005208','3003647','3006581') 14. Comparacao entre duas tabelas no query analyzer 2 SELECT Candidato.num_ficha AS Inscricao, Candidato.Nome AS Candidato, Candidato.Data_Nasc AS DataNasc, Cargo.Cod AS CodCargo, Cargo.Nome AS Cargo, Classificacao.Nota AS NotaObjetiva, Classificacao.Class_Objetiva AS ClassObjetiva, Classificacao.Flag_Class, Classificacao.Flag_Class_Final, notas_titulos_antiga.nota as nota_antiga, Notas_Titulos_nova.Nota as nota_nova FROM (((Candidato INNER JOIN Cargo ON Candidato.Cod_Cargo = Cargo.Cod) INNER JOIN Classificacao ON Candidato.num_ficha = Classificacao.Num_Ficha) INNER JOIN Notas_Titulos_nova ON Candidato.num_ficha = Notas_Titulos_nova.Num_Ficha) INNER JOIN notas_titulos_antiga ON Candidato.num_ficha = notas_titulos_antiga.num_ficha WHERE (((Candidato.num_ficha) In ('3000753','3009645','3013634','3005208','3003647','3006581')) AND ((Classificacao.Flag_Class)='S')) ORDER BY Cargo.Cod, Candidato.Nome 15. Imprimindo linhas de cores diferentes no access/vb Dim cor As Integer Private Sub Detalhe_Print(Cancel As Integer, PrintCount As Integer) 'imprime uma linha na cor branca e outra na cor cinza If cor = 0 Then Detalhe.BackColor = 16777215 'cor branca cor = 1 Else Detalhe.BackColor = 12632256 'cor cinza cor = 0 End If End Sub 16. Contando candidatos com mais de uma inscricao select ac.cpf, COUNT(AC.CPF) as contador from candidato ac group by ac.cpf having count(distinct ac.cpf) = 1 order by contador, ac.cpf 17. Seleciona um nome, testando e validando o primeiro caracter, e, copia da segundo posicao para frente select IF (substring(nome,1,1) = '.', SUBSTRING(nome,2,100), SUBSTRING(nome,1,100) ) from pessoa 18. Efetuando update num campo, testando e validando o primeiro caracter, e, copia da segundo posicao para frente 1o. ex.: (MySQL) update pessoa set nome = ( IF (substring(nome,1,1) = '.', SUBSTRING(nome,2,100), SUBSTRING(nome,1,100) ) ) 2o. ex.: (SQLServer) update pessoa set nome = CASE WHEN CHARINDEX('.', substring(pessoa.nome,1,1)) > 0 THEN ltrim(SUBSTRING(pessoa.nome, 2, 50)) ELSE ltrim(SUBSTRING(pessoa.nome, 1, 50)) END 19. Total de candidatos por sala SELECT Alocacao_Candidato.Cod_Local, Prova.Data, Prova.Hora_Inicio AS Início, Local_Prova.Codigo_Local " - ", Local_Prova.Nome AS [Local], Alocacao_Candidato.Cod_Local AS CodLocal, Local_Prova.Cidade AS LocalidadeLocalProva, sala.nome, Sala.Capacidade AS CapacidadeSala, Local_Prova_Opcao_Local.Sigla_Opcao_Local, Local_Prova.Endereco, Local_Prova.Bairro, Local_Prova.Cidade, Local_Prova.Estado, Local_Prova.Codigo_Local FROM ((((((((Alocacao_Candidato INNER JOIN Prova ON Alocacao_Candidato.Cod_Prova = Prova.Cod) INNER JOIN Candidato ON Alocacao_Candidato.Num_Ficha = Candidato.num_ficha) INNER JOIN Sala ON (Alocacao_Candidato.Cod_Local = Sala.Codigo_Local) AND (Alocacao_Candidato.Cod_Bloco = Sala.Codigo_Bloco) AND (Alocacao_Candidato.Cod_Setor = Sala.Codigo_Setor) AND (Alocacao_Candidato.Cod_Grupo = Sala.Codigo_Grupo) AND (Alocacao_Candidato.Cod_Sala = Sala.Codigo_Sala)) INNER JOIN Local_Prova ON Alocacao_Candidato.Cod_Local = Local_Prova.Codigo_Local) INNER JOIN Bloco ON Alocacao_Candidato.Cod_Bloco = Bloco.Codigo_Bloco) INNER JOIN Setor ON Alocacao_Candidato.Cod_Setor = Setor.Codigo_Setor) INNER JOIN Local_Prova_Opcao_Local ON Local_Prova.Codigo_Local = Local_Prova_Opcao_Local.Cod_Local_Prova) INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local = Opcao_Local.Sigla) INNER JOIN Cargo ON Prova.Cod_Cargo = Cargo.Cod GROUP BY Alocacao_Candidato.Cod_Local, Prova.Data, Prova.Hora_Inicio, Alocacao_Candidato.Cod_Local, Local_Prova.Cidade, sala.nome, Sala.Capacidade, Local_Prova_Opcao_Local.Sigla_Opcao_Local, Local_Prova.Endereco, Local_Prova.Bairro, Local_Prova.Cidade, Local_Prova.Estado, Local_Prova.Codigo_Local, Local_Prova.Nome, Local_Prova.Codigo_Local ORDER BY Local_Prova.Codigo_Local; 20. Para gerar lista de presenca SELECT Local_Prova.Codigo_Local, Prova.Data, Prova.Hora_Inicio, Sala.Nome, Prova.Id_Horario, Local_Prova.Nome as LNome, Local_Prova.Sigla, Bloco.Nome as BNome, Setor.Nome as SNome, Bloco.Codigo_Bloco, Setor.Codigo_Setor, Sala.Codigo_Sala, Count(alocacao_candidato_pratica.Num_Ficha) AS totcand FROM (((((((alocacao_candidato_pratica INNER JOIN Prova ON alocacao_candidato_pratica.Cod_Prova = Prova.Cod) INNER JOIN Candidato ON alocacao_candidato_pratica.Num_Ficha = Candidato.num_ficha) INNER JOIN Sala ON (alocacao_candidato_pratica.Cod_Sala = Sala.Codigo_Sala) AND (alocacao_candidato_pratica.Cod_Grupo = Sala.Codigo_Grupo) AND (alocacao_candidato_pratica.Cod_Setor = Sala.Codigo_Setor) AND (alocacao_candidato_pratica.Cod_Bloco = Sala.Codigo_Bloco) AND (alocacao_candidato_pratica.Cod_Local = Sala.Codigo_Local)) INNER JOIN Local_Prova ON alocacao_candidato_pratica.Cod_Local = Local_Prova.Codigo_Local) INNER JOIN Bloco ON alocacao_candidato_pratica.Cod_Bloco = Bloco.Codigo_Bloco) INNER JOIN Setor ON alocacao_candidato_pratica.Cod_Setor = Setor.Codigo_Setor) INNER JOIN Local_Prova_Opcao_Local ON Local_Prova.Codigo_Local = Local_Prova_Opcao_Local.Cod_Local_Prova) INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local = Opcao_Local.Sigla //WHERE (Alocacao_Candidato.Aloc_Add = 'S' GROUP BY Local_Prova.Codigo_Local, Prova.Data, Prova.Hora_Inicio, Sala.Nome, Prova.Id_Horario, Local_Prova.Nome, Local_Prova.Sigla, Bloco.Nome, Setor.Nome, Bloco.Codigo_Bloco, Setor.Codigo_Setor, Sala.Codigo_Sala ORDER BY Prova.Data, Prova.Hora_Inicio, Local_Prova.Codigo_Local, Bloco.Codigo_Bloco, Setor.Codigo_Setor, Sala.Codigo_Sala SET DATEFORMAT dmy SELECT C.Num_Ficha, C.Nome, C.Num_Filhos, C.Data_Nasc, C.Vaga_Deficiente, C.Prova_Especial, CG.Nome as CGNome, C.Opcao_Local, P.Cod, OV.Nome as OVNome, P.Descricao as Desc_Prova, P.Cod as Cod, CG.Sigla FROM Candidato C, Cargo CG, Prova P, Alocacao_Candidato_Pratica AC, Opcao_Vaga OV WHERE AC.Num_Ficha = C.Num_Ficha and P.Data = '22/11/2004' and P.Hora_Inicio = '08:00' and C.Cod_Cargo = CG.Cod and AC.Cod_Prova = P.Cod and CG.Cod = P.Cod_cargo and AC.Cod_Local = '007' and AC.Cod_Bloco = '09' and AC.Cod_Setor = '014' and //AC.Cod_Grupo = '" & intCodGrupo & "' and AC.Cod_Sala = '01' and C.Opcao_Vaga = OV.Cod //AC.Aloc_Add = 'S' ORDER BY C.Nome UPDATE alocacao_candidato SET Num_Cartao_Sala = intSeqSala WHERE Num_ficha = '" & Format$(rsCand("Num_Ficha"), "0000000") & "' and cod_prova = rsCand("Cod") 21. Localizando um caracter em um campo e a definindo outro valor caso verdadeiro (sqlserver) 1o ex.: select codigo_bloco, CASE WHEN CHARINDEX('.', bloco.nome) > 0 THEN 'achei o ponto - nome inválido' ELSE nome END from bloco 2o ex.: select p.codigo_bloco, CASE WHEN CHARINDEX('.', substring(p.nome,1,1)) > 0 THEN 'achei o ponto e mudei para: ' + ltrim(SUBSTRING(p.nome, 2, 50)) ELSE ltrim(SUBSTRING(p.nome, 1, 50)) END from pessoa p 22. Criando uma procedure para efetuar um update com passagem de parametro CREATE proc get_Corrigir_Nome @simbolo char(1) as update pessoa set nome = CASE WHEN CHARINDEX(@simbolo, substring(pessoa.nome,1,1)) > 0 THEN ltrim(SUBSTRING(pessoa.nome, 2, 50)) ELSE ltrim(SUBSTRING(pessoa.nome, 1, 50)) END GO chamando a procedure e passando como parametro um ponto: get_Corrigir_Nome '.' Obs.: Essa procedure irá verificar no campo nome, se o primerio caracter contém o [parametro] passado; se contiver o caracter no primeiro campo, fará um update apartir do segundo campo 23. Trigger para ao inserir dados em uma tabela, fazer a checagem de determinados dados caracteres proibidos para nomes CREATE TRIGGER nosimbol_bloco ON bloco FOR INSERT AS update bloco set nome = CASE WHEN CHARINDEX('.', substring(bloco.nome,1,1)) > 0 or CHARINDEX(',', substring(bloco.nome,1,1)) > 0 or CHARINDEX('/', substring(bloco.nome,1,1)) > 0 or CHARINDEX(' ', substring(bloco.nome,1,1)) > 0 or CHARINDEX('\', substring(bloco.nome,1,1)) > 0 or CHARINDEX('|', substring(bloco.nome,1,1)) > 0 or CHARINDEX('<', substring(bloco.nome,1,1)) > 0 or CHARINDEX('>', substring(bloco.nome,1,1)) > 0 or CHARINDEX('?', substring(bloco.nome,1,1)) > 0 or CHARINDEX(';', substring(bloco.nome,1,1)) > 0 or CHARINDEX(':', substring(bloco.nome,1,1)) > 0 or CHARINDEX('"', substring(bloco.nome,1,1)) > 0 or CHARINDEX('`', substring(bloco.nome,1,1)) > 0 or CHARINDEX('1', substring(bloco.nome,1,1)) > 0 or CHARINDEX('2', substring(bloco.nome,1,1)) > 0 or CHARINDEX('3', substring(bloco.nome,1,1)) > 0 or CHARINDEX('4', substring(bloco.nome,1,1)) > 0 or CHARINDEX('5', substring(bloco.nome,1,1)) > 0 or CHARINDEX('6', substring(bloco.nome,1,1)) > 0 or CHARINDEX('7', substring(bloco.nome,1,1)) > 0 or CHARINDEX('8', substring(bloco.nome,1,1)) > 0 or CHARINDEX('9', substring(bloco.nome,1,1)) > 0 or CHARINDEX('0', substring(bloco.nome,1,1)) > 0 or CHARINDEX('-', substring(bloco.nome,1,1)) > 0 or CHARINDEX('=', substring(bloco.nome,1,1)) > 0 or CHARINDEX('~', substring(bloco.nome,1,1)) > 0 or CHARINDEX('!', substring(bloco.nome,1,1)) > 0 or CHARINDEX('@', substring(bloco.nome,1,1)) > 0 or CHARINDEX('#', substring(bloco.nome,1,1)) > 0 or CHARINDEX('$', substring(bloco.nome,1,1)) > 0 or CHARINDEX('%', substring(bloco.nome,1,1)) > 0 or CHARINDEX('^', substring(bloco.nome,1,1)) > 0 or CHARINDEX('&', substring(bloco.nome,1,1)) > 0 or CHARINDEX('*', substring(bloco.nome,1,1)) > 0 or CHARINDEX('(', substring(bloco.nome,1,1)) > 0 or CHARINDEX(')', substring(bloco.nome,1,1)) > 0 or CHARINDEX('_', substring(bloco.nome,1,1)) > 0 or CHARINDEX('+', substring(bloco.nome,1,1)) > 0 or CHARINDEX('[', substring(bloco.nome,1,1)) > 0 or CHARINDEX(']', substring(bloco.nome,1,1)) > 0 or CHARINDEX('{', substring(bloco.nome,1,1)) > 0 or CHARINDEX('}', substring(bloco.nome,1,1)) > 0 THEN ltrim(SUBSTRING(bloco.nome, 2, 50)) ELSE ltrim(SUBSTRING(bloco.nome, 1, 50)) END 24. Depois de uma importacao de cartoes efetuar conferencia //Ao importar arquivos cartao resposta no VB, as informacoes serao //inseridas na tabela cartao_resp_le; //Depois de uma importacao de cartoes efetuar a seguinte conferencia: select 'total de faltosos P e F', count(*) from cartao_resp_le where faltoso = 'P' and faltoso2 = 'F' select 'faltosos P e F', * from cartao_resp_le where faltoso = 'P' and faltoso2 = 'F' select 'total de faltosos F e P', count(*) from cartao_resp_le where faltoso = 'F' and faltoso2 = 'P' select 'faltosos F e P', * from cartao_resp_le where faltoso = 'F' and faltoso2 = 'P' select 'total de registro com menos de 40 char', count(*) from cartao_resp_le where len(questoes) < 40 select * from cartao_resp_le where lote = '' or numero_ficha = '' or cod_prova = '' or faltoso = '' or faltoso2 = '' select 'total de marcacoes em branco ', count(*) from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%*%') select 'marcacoes em branco ', * from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%*%') select 'total de marcacoes duplicadas ', count(*) from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%?%') select 'marcacoes duplicadas ', * from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%?%') select 'total de presentes ', count(*) from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' select 'total de faltosos ', count(*) from cartao_resp_le where faltoso = 'F' and faltoso2 = 'F' and questoes like('%*%') select 'total geral de registros', count(*) from cartao_resp_le //insert na tabela cartao_resp delete from cartao_resp insert cartao_resp select * from cartao_resp_le select count(*) from cartao_resp //insert na tabela nota_candidato delete from nota_candidato select num_ficha from nota_candidato group by num_ficha //conferencia dos aprovados SELECT Count(nota_candidato.Num_Ficha) total_de_fichas_aprovadas, nota_candidato.Num_Ficha, sum(nota_candidato.num_acertos) num_acertos, sum(disciplina.questao_final-(disciplina.questao_inicial-1)) as totQuestoes FROM Disciplina, nota_candidato, candidato, prova WHERE nota_candidato.num_ficha = candidato.num_ficha and candidato.flag_exclusao = 'N' and Disciplina.Cod_Prova = nota_candidato.Cod_Prova and Disciplina.Sigla = nota_candidato.Sigla_Disc and nota_candidato.cod_prova = prova.cod and prova.sigla = 'OBJ' and nota_candidato.nota <> 0 GROUP BY nota_candidato.Num_Ficha, prova.minimo_acertos HAVING (Sum(nota_candidato.num_acertos)) >= Sum([disciplina].[questao_final]-([disciplina].[questao_inicial]-1))* 0.4 SELECT Count(nota_candidato.Num_Ficha) total_de_fichas_reprovadas, nota_candidato.Num_Ficha, sum(nota_candidato.num_acertos) num_acertos, sum(disciplina.questao_final-(disciplina.questao_inicial-1)) as totQuestoes FROM Disciplina, nota_candidato, candidato, prova WHERE nota_candidato.num_ficha = candidato.num_ficha and candidato.flag_exclusao = 'N' and Disciplina.Cod_Prova = nota_candidato.Cod_Prova and Disciplina.Sigla = nota_candidato.Sigla_Disc and nota_candidato.cod_prova = prova.cod and prova.sigla = 'OBJ' and nota_candidato.nota <> 0 GROUP BY nota_candidato.Num_Ficha, prova.minimo_acertos HAVING (Sum(nota_candidato.num_acertos)) < Sum([disciplina].[questao_final]-([disciplina].[questao_inicial]-1))* 0.4 SELECT Count(nota_candidato.Num_Ficha) total_de_fichas_zeradas, nota_candidato.Num_Ficha, sum(nota_candidato.num_acertos) num_acertos, sum(disciplina.questao_final-(disciplina.questao_inicial-1)) as totQuestoes FROM Disciplina, nota_candidato, candidato, prova WHERE nota_candidato.num_ficha = candidato.num_ficha and candidato.flag_exclusao = 'N' and Disciplina.Cod_Prova = nota_candidato.Cod_Prova and Disciplina.Sigla = nota_candidato.Sigla_Disc and nota_candidato.cod_prova = prova.cod and prova.sigla = 'OBJ' and nota_candidato.nota = 0 GROUP BY nota_candidato.Num_Ficha, prova.minimo_acertos //conferencia das notas //notas zero select n.num_ficha FROM nota_candidato n WHERE ( n.num_ficha NOT IN (select nc.num_ficha from nota_candidato nc where nc.nota > 0 )) and n.nota = 0 group by n.num_ficha ORDER BY n.num_ficha; //notas com zero select n.num_ficha, n.cod_prova, n.sigla_disc, n.cod_prova, n.nota FROM nota_candidato n WHERE ( n.num_ficha IN (select nc.num_ficha from nota_candidato nc where nc.nota > 0)) and n.nota = 0 group by n.num_ficha, n.cod_prova, n.sigla_disc, n.cod_prova, n.nota ORDER BY n.num_ficha; //notas acima de zero select num_ficha, cod_prova from nota_candidato where nota > 0 group by num_ficha, cod_prova ORDER BY num_ficha; //notas com zero select num_ficha, cod_prova from nota_candidato where nota = 0 group by num_ficha, cod_prova ORDER BY num_ficha; //total geral select num_ficha, cod_prova from nota_candidato group by num_ficha, cod_prova //gerar relatorio no access 'total de aprovados por local e cargo' 25. Select dos candidatos alocados apos a alocacao Verificar salas disponiveis e inclui-los: insert into alocacao_candidato (cod_prova, num_ficha, cod_local, cod_setor, cod_grupo, cod_sala, numero_gabarito, questoes, presente_lista, presente_cartao, num_seq_cartao, num_cartao_sala, aloc_add, imp_cartao) values ('8', '6254888', '011', '11', '011', '1', '07', '1', '', '', '', '0', '0', 'N', '') Relatorio apos a inclusao: SELECT ac.num_ficha inscricao, ca.data_nasc, ca.Nome, cg.nome cargo, ol.nome, lp.nome escola, sl.nome, sl.codigo_sala, sl.codigo_local FROM candidato ca, cargo cg, opcao_local ol, local_prova lp, alocacao_candidato ac, sala sl where ca.cod_cargo = cg.cod and ca.opcao_local = ol.cod and ac.num_ficha = ca.num_ficha and ac.cod_local = lp.codigo_local and ac.cod_sala = sl.codigo_sala and lp.codigo_local = sl.codigo_local and (ac.num_ficha IN ('6254888', '5069998', '0045462', '5106940', '0602906')) order by ca.nome 26. Gerar Alocacao A.Sequencia da emissao dos relatorios numa alocacao (Gerar tambem PDF's) 1. SQL para total de inscritos por opcao de local e cargo SELECT Opcao_Local.Cod AS CodOpcaoLocal, Opcao_Local.Sigla AS SiglaOpcaoLocal, Opcao_Local.Nome AS OpcaoLocal, Cargo.Cod AS CodCargo, Cargo.Nome AS Cargo, Count(Candidato.num_ficha) AS Inscricao, Count(Candidato.num_ficha) AS ContarDenum_ficha FROM (Candidato INNER JOIN Opcao_Local ON Candidato.Opcao_Local = Opcao_Local.Cod) INNER JOIN Cargo ON Candidato.Cod_Cargo = Cargo.Cod WHERE (((Candidato.Flag_Exclusao)="N")) GROUP BY Opcao_Local.Cod, Opcao_Local.Sigla, Opcao_Local.Nome, Cargo.Cod, Cargo.Nome ORDER BY Opcao_Local.Cod; 2. Total de candidatos alocados por local de prova sala e turno SELECT Opcao_Local.Nome AS OpcaoLocal, Local_Prova.Codigo_Local AS CodLocal, Local_Prova.Endereco, Local_Prova.Bairro, Local_Prova.Cidade, Local_Prova.Nome AS LocalProva, Local_Prova.Cidade AS LocalidadeLocalProva, Bloco.Codigo_Bloco AS CodBloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor AS CodSetor, Setor.Nome AS Setor, Grupo.Codigo_Grupo AS CodGrupo, Sala.Codigo_Sala AS CodSala, Sala.Nome AS Sala, Sala.Capacidade AS Capacidade FROM (Local_Prova_Opcao_Local INNER JOIN (Local_Prova INNER JOIN ((Bloco INNER JOIN (Setor INNER JOIN Grupo ON (Setor.Codigo_Local=Grupo.Codigo_Local) AND (Setor.Codigo_Bloco=Grupo.Codigo_Bloco) AND (Setor.Codigo_Setor=Grupo.Codigo_Setor)) ON (Bloco.Codigo_Local=Setor.Codigo_Local) AND (Bloco.Codigo_Bloco=Setor.Codigo_Bloco)) INNER JOIN Sala ON (Grupo.Codigo_Local=Sala.Codigo_Local) AND (Grupo.Codigo_Bloco=Sala.Codigo_Bloco) AND (Grupo.Codigo_Setor=Sala.Codigo_Setor) AND (Grupo.Codigo_Grupo=Sala.Codigo_Grupo)) ON Local_Prova.Codigo_Local=Bloco.Codigo_Local) ON Local_Prova_Opcao_Local.Cod_Local_Prova=Local_Prova.Codigo_Local) INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local=Opcao_Local.Sigla GROUP BY Opcao_Local.Nome, Local_Prova.Codigo_Local, Local_Prova.Endereco, Local_Prova.Bairro, Local_Prova.Cidade, Local_Prova.Nome, Local_Prova.Cidade, Bloco.Codigo_Bloco, Bloco.Nome, Setor.Codigo_Setor, Setor.Nome, Grupo.Codigo_Grupo, Sala.Codigo_Sala, Sala.Nome, Sala.Capacidade HAVING (((Local_Prova.Codigo_Local) In ('001','002','008','009','003','010','004','005','011','006','007','013','014','015','016','017','027','019','028','021','022','023','024','025','029','026'))) ORDER BY Local_Prova.Codigo_Local; 3. Alocacao geral dos candidatos por local de prova SELECT Opcao_Local.Cod, Opcao_Local.Nome AS OpcaoLocal, Candidato.CPF, Mid(candidato.nome,1,1) AS Letra, Candidato.num_ficha AS Ficha, Candidato.Nome AS Candidato, Cargo.Cod AS CodCargo, Cargo.Sigla AS SiglaCargo, " " & Cargo.Nome AS Cargo, Prova.Data, Prova.Hora_Inicio AS Início, Local_Prova.Codigo_Local & " - " & Local_Prova.Nome AS [Local], Bloco.Codigo_Bloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor, Setor.Nome AS Setor, Sala.Codigo_Sala, Sala.Nome AS Sala, Alocacao_Candidato.Cod_Local AS CodLocal, Local_Prova.Cidade AS LocalidadeLocalProva, Sala.Capacidade AS CapacidadeSala, Local_Prova_Opcao_Local.Sigla_Opcao_Local, Local_Prova.Endereco, Local_Prova.Bairro, Local_Prova.Cidade, Local_Prova.Estado, Local_Prova.Codigo_Local FROM ((((((((Alocacao_Candidato INNER JOIN Prova ON Alocacao_Candidato.Cod_Prova=Prova.Cod) INNER JOIN Candidato ON Alocacao_Candidato.Num_Ficha=Candidato.num_ficha) INNER JOIN Sala ON (Alocacao_Candidato.Cod_Sala=Sala.Codigo_Sala) AND (Alocacao_Candidato.Cod_Grupo=Sala.Codigo_Grupo) AND (Alocacao_Candidato.Cod_Setor=Sala.Codigo_Setor) AND (Alocacao_Candidato.Cod_Bloco=Sala.Codigo_Bloco) AND (Alocacao_Candidato.Cod_Local=Sala.Codigo_Local)) INNER JOIN Local_Prova ON Alocacao_Candidato.Cod_Local=Local_Prova.Codigo_Local) INNER JOIN Bloco ON Alocacao_Candidato.Cod_Bloco=Bloco.Codigo_Bloco) INNER JOIN Setor ON Alocacao_Candidato.Cod_Setor=Setor.Codigo_Setor) INNER JOIN Local_Prova_Opcao_Local ON Local_Prova.Codigo_Local=Local_Prova_Opcao_Local.Cod_Local_Prova) INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local=Opcao_Local.Sigla) INNER JOIN Cargo ON Prova.Cod_Cargo=Cargo.Cod ORDER BY Opcao_Local.Nome, Local_Prova.Codigo_Local, Sala.Codigo_Sala; obs.: Ou, Producao - Candidatos Alocados por Local de Prova 4. Alocacao geral dos candidatos por intervalo - A4 SELECT [error-Alocacao Geral Cod].OpcaoLocal, [error-Alocacao Geral Cod].Data, [error-Alocacao Geral Cod].Início, IIf([Início]="08:40","08:30","14:45") AS Fechamento, [error-Alocacao Geral Cod].CodLocal, [error-Alocacao Geral Cod].Local, [error-Alocacao Geral Cod].End, [error-Alocacao Geral Cod].Codigo_Bloco, [error-Alocacao Geral Cod].Bloco, [error-Alocacao Geral Cod].Codigo_Setor, [error-Alocacao Geral Cod].Setor, [error-Alocacao Geral Cod].Codigo_Sala, [error-Alocacao Geral Cod].Sala, [error-Alocacao Geral Cod].Cargo, First([error-Alocacao Geral Cod].Candidato) AS PrimeiroDeCandidato, Last([error-Alocacao Geral Cod].Candidato) AS ÚltimoDeCandidato, [error-Alocacao Geral Cod].Cod FROM [error-Alocacao Geral Cod] GROUP BY [error-Alocacao Geral Cod].OpcaoLocal, [error-Alocacao Geral Cod].Data, [error-Alocacao Geral Cod].Início, IIf([Início]="08:40","08:30","14:45"), [error-Alocacao Geral Cod].CodLocal, [error-Alocacao Geral Cod].Local, [error-Alocacao Geral Cod].End, [error-Alocacao Geral Cod].Codigo_Bloco, [error-Alocacao Geral Cod].Bloco, [error-Alocacao Geral Cod].Codigo_Setor, [error-Alocacao Geral Cod].Setor, [error-Alocacao Geral Cod].Codigo_Sala, [error-Alocacao Geral Cod].Sala, [error-Alocacao Geral Cod].Cargo, [error-Alocacao Geral Cod].Cod ORDER BY [error-Alocacao Geral Cod].OpcaoLocal, [error-Alocacao Geral Cod].Data, [error-Alocacao Geral Cod].Início, [error-Alocacao Geral Cod].CodLocal, [error-Alocacao Geral Cod].Codigo_Bloco, [error-Alocacao Geral Cod].Codigo_Setor, [error-Alocacao Geral Cod].Codigo_Sala, [error-Alocacao Geral Cod].Cargo; 5. Envelopamento de provas SELECT Opcao_Local.Nome AS [Local], Bloco.Codigo_Bloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor, Setor.Nome AS Andar, Sala.Codigo_Sala, Sala.Nome AS Sala, local_prova.codigo_local & ' - ' & local_prova.Nome AS Escola, [Data] & ' - ' & [hora_inicio] AS Turno, Prova1.Data, Prova1.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala, Prova1.Descricao AS Prova, Count(Alocacao_Candidato.Num_Ficha) AS Quantidade FROM ((Local_Prova_Opcao_Local INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local = Opcao_Local.Sigla) INNER JOIN ((((Alocacao_Candidato INNER JOIN Sala ON (Alocacao_Candidato.Cod_Sala = Sala.Codigo_Sala) AND (Alocacao_Candidato.Cod_Grupo = Sala.Codigo_Grupo) AND (Alocacao_Candidato.Cod_Setor = Sala.Codigo_Setor) AND (Alocacao_Candidato.Cod_Bloco = Sala.Codigo_Bloco) AND (Alocacao_Candidato.Cod_Local = Sala.Codigo_Local)) INNER JOIN Setor ON (Sala.Codigo_Setor = Setor.Codigo_Setor) AND (Sala.Codigo_Bloco = Setor.Codigo_Bloco) AND (Sala.Codigo_Local = Setor.Codigo_Local)) INNER JOIN Bloco ON (Setor.Codigo_Bloco = Bloco.Codigo_Bloco) AND (Setor.Codigo_Local = Bloco.Codigo_Local)) INNER JOIN Local_Prova ON Bloco.Codigo_Local = Local_Prova.Codigo_Local) ON Local_Prova_Opcao_Local.Cod_Local_Prova = Local_Prova.Codigo_Local) INNER JOIN Prova1 ON Alocacao_Candidato.Cod_Prova = Prova1.Cod GROUP BY Opcao_Local.Nome, Bloco.Codigo_Bloco, Bloco.Nome, Setor.Codigo_Setor, Setor.Nome, Sala.Codigo_Sala, Sala.Nome, local_prova.codigo_local & ' - ' & local_prova.Nome, [Data] & ' - ' & [hora_inicio], Prova1.Data, Prova1.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala, Prova1.Descricao ORDER BY Opcao_Local.Nome, Prova1.Data, Prova1.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala, Prova1.Descricao; 6. Envelopamento de cartoes SELECT Opcao_Local.Nome AS [Local], Bloco.Codigo_Bloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor, Setor.Nome AS Andar, Sala.Codigo_Sala, Sala.Nome AS Sala, local_prova.codigo_local & ' - ' & local_prova.Nome AS Escola, [Data] & ' ' & [hora_inicio] AS Turno, Prova.Data, Prova.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala FROM (Local_Prova_Opcao_Local INNER JOIN Opcao_Local ON Local_Prova_Opcao_Local.Sigla_Opcao_Local = Opcao_Local.Sigla) INNER JOIN (Prova INNER JOIN ((((Alocacao_Candidato INNER JOIN Sala ON (Alocacao_Candidato.Cod_Sala = Sala.Codigo_Sala) AND (Alocacao_Candidato.Cod_Grupo = Sala.Codigo_Grupo) AND (Alocacao_Candidato.Cod_Setor = Sala.Codigo_Setor) AND (Alocacao_Candidato.Cod_Bloco = Sala.Codigo_Bloco) AND (Alocacao_Candidato.Cod_Local = Sala.Codigo_Local)) INNER JOIN Setor ON (Sala.Codigo_Setor = Setor.Codigo_Setor) AND (Sala.Codigo_Bloco = Setor.Codigo_Bloco) AND (Sala.Codigo_Local = Setor.Codigo_Local)) INNER JOIN Bloco ON (Setor.Codigo_Bloco = Bloco.Codigo_Bloco) AND (Setor.Codigo_Local = Bloco.Codigo_Local)) INNER JOIN Local_Prova ON Bloco.Codigo_Local = Local_Prova.Codigo_Local) ON Prova.Cod = Alocacao_Candidato.Cod_Prova) ON Local_Prova_Opcao_Local.Cod_Local_Prova = Local_Prova.Codigo_Local GROUP BY Opcao_Local.Nome, Bloco.Codigo_Bloco, Bloco.Nome, Setor.Codigo_Setor, Setor.Nome, Sala.Codigo_Sala, Sala.Nome, local_prova.codigo_local & ' - ' & local_prova.Nome, [Data] & ' ' & [hora_inicio], Prova.Data, Prova.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala ORDER BY Opcao_Local.Nome, Prova.Data, Prova.Hora_Inicio, Alocacao_Candidato.Cod_Local, Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Sala; 7. Etiqueta para envelope de seguranca SELECT Prova.Data AS DataProva, Prova.Hora_Inicio, Prova.Id_Horario AS Turno, Prova.Sigla AS Sigla, Prova.Descricao AS Prova, Local_Prova.Codigo_Local, Local_prova.Nome & " - " & [Estado] AS [Local Prova], Bloco.Codigo_Bloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor, Setor.Nome AS Setor, Sala.Codigo_Sala, Sala.Nome AS Sala, Sum(1) AS Total FROM (Cargo INNER JOIN Prova ON Cargo.Cod = Prova.Cod_Cargo) INNER JOIN (((((Local_Prova INNER JOIN Bloco ON Local_Prova.Codigo_Local = Bloco.Codigo_Local) INNER JOIN Setor ON (Bloco.Codigo_Bloco = Setor.Codigo_Bloco) AND (Bloco.Codigo_Local = Setor.Codigo_Local)) INNER JOIN Grupo ON (Setor.Codigo_Setor = Grupo.Codigo_Setor) AND (Setor.Codigo_Bloco = Grupo.Codigo_Bloco) AND (Setor.Codigo_Local = Grupo.Codigo_Local)) INNER JOIN Sala ON (Grupo.Codigo_Grupo = Sala.Codigo_Grupo) AND (Grupo.Codigo_Setor = Sala.Codigo_Setor) AND (Grupo.Codigo_Bloco = Sala.Codigo_Bloco) AND (Grupo.Codigo_Local = Sala.Codigo_Local)) INNER JOIN Alocacao_Candidato ON (Sala.Codigo_Sala = Alocacao_Candidato.Cod_Sala) AND (Sala.Codigo_Grupo = Alocacao_Candidato.Cod_Grupo) AND (Sala.Codigo_Setor = Alocacao_Candidato.Cod_Setor) AND (Sala.Codigo_Bloco = Alocacao_Candidato.Cod_Bloco) AND (Sala.Codigo_Local = Alocacao_Candidato.Cod_Local)) ON Prova.Cod = Alocacao_Candidato.Cod_Prova GROUP BY Prova.Data, Prova.Hora_Inicio, Prova.Id_Horario, Prova.Sigla, Prova.Descricao, Local_Prova.Codigo_Local, Local_prova.Nome & " - " & [Estado], Bloco.Codigo_Bloco, Bloco.Nome, Setor.Codigo_Setor, Setor.Nome, Sala.Codigo_Sala, Sala.Nome ORDER BY Local_Prova.Codigo_Local, Prova.Id_Horario, Bloco.Codigo_Bloco, Setor.Codigo_Setor, Sala.Codigo_Sala; 8. Levantamento de faltosos SELECT Local_Prova.Codigo_Local AS CodigoLocal, Prova.Data AS DataProva, Prova.Hora_Inicio AS Hora, Prova.Id_Horario AS Turno, Local_Prova.Sigla AS Sigla, Local_Prova.Nome AS LocalProva, Bloco.Codigo_Bloco, Bloco.Nome AS Bloco, Setor.Codigo_Setor, Setor.Nome AS Setor, Grupo.Codigo_Grupo AS Grupo, Sala.Codigo_Sala, Sala.Nome AS Sala, Count(Alocacao_Candidato.Num_Ficha) AS Alocado, Cargo.Cod AS CodigoCargo, Cargo.Nome AS Cargo FROM Cargo INNER JOIN (Prova INNER JOIN (((((Local_Prova INNER JOIN Bloco ON Local_Prova.Codigo_Local = Bloco.Codigo_Local) INNER JOIN Setor ON (Bloco.Codigo_Local = Setor.Codigo_Local) AND (Bloco.Codigo_Bloco = Setor.Codigo_Bloco)) INNER JOIN Grupo ON (Setor.Codigo_Local = Grupo.Codigo_Local) AND (Setor.Codigo_Bloco = Grupo.Codigo_Bloco) AND (Setor.Codigo_Setor = Grupo.Codigo_Setor)) INNER JOIN Sala ON (Grupo.Codigo_Local = Sala.Codigo_Local) AND (Grupo.Codigo_Bloco = Sala.Codigo_Bloco) AND (Grupo.Codigo_Setor = Sala.Codigo_Setor) AND (Grupo.Codigo_Grupo = Sala.Codigo_Grupo)) INNER JOIN Alocacao_Candidato ON (Sala.Codigo_Local = Alocacao_Candidato.Cod_Local) AND (Sala.Codigo_Bloco = Alocacao_Candidato.Cod_Bloco) AND (Sala.Codigo_Setor = Alocacao_Candidato.Cod_Setor) AND (Sala.Codigo_Grupo = Alocacao_Candidato.Cod_Grupo) AND (Sala.Codigo_Sala = Alocacao_Candidato.Cod_Sala)) ON Prova.Cod = Alocacao_Candidato.Cod_Prova) ON Cargo.Cod = Prova.Cod_Cargo GROUP BY Local_Prova.Codigo_Local, Prova.Data, Prova.Hora_Inicio, Prova.Id_Horario, Local_Prova.Sigla, Local_Prova.Nome, Bloco.Codigo_Bloco, Bloco.Nome, Setor.Codigo_Setor, Setor.Nome, Grupo.Codigo_Grupo, Sala.Codigo_Sala, Sala.Nome, Cargo.Cod, Cargo.Nome ORDER BY Local_Prova.Codigo_Local, Prova.Data, Prova.Hora_Inicio, Local_Prova.Nome, Sala.Nome; B. Gerando a alocacao 1. update sala set situacao = 'D' 2. update sala set situacao = 'A' where codigo_local in('007') //pode-se deixar de fora salas com capacidade menores 3. Efetuar a alocacao no VB - principal - alocar candidatos OBS.: Gerar e analizar tempVerificacaoAlocacao C. Preparando materiais (gerar nesta sequencia) - InterfExt no VB 1. Capa de sala (salvar o arquivo gerado no diretorio do concurso, na pasta impressao, em capa de sala) 2. Lista de presenca (salvar o arquivo gerado no diretorio do concurso, na pasta impressao, em lista de presenca) 3. Cartao Resposta (salvar o arquivo gerado no diretorio do concurso, na pasta impressao, em cartao resposta) 4. Redacao (salvar o arquivo gerado no diretorio do concurso, na pasta impressao, em redacao) - verificar cargo em que nao terao redacao -> linha 2251 no vb: cod_cargo <> 7 D. Procedimentos finais (ativar na internet) E. Nao foi gerada a carta de convocacao, porque foi direto pela internet (se fosse gerada, deve-se comparar o arquivo gerado com a tabela alocacao_candidato 1. Alterar o campo 'internetConvocacao' e 'notaAlocacao' na tabela teste 2. Retirar (PROVA A) e PROVA B) na tabela prova 27. Rotina de teste e verificacao das importacoes dos cartoes (conferencia para ver se batem os valores) 'begin comments by eliel 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'Total de faltosos P e F' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'F' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(1, 1) = rsVerificacaoGeral("msg") vetMsg(1, 2) = rsVerificacaoGeral("total") Else vetMsg(1, 1) = "Total de faltosos P e F" vetMsg(1, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'Faltosos P e F' msg, num_ficha, questoes " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'F' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(2, 1) = rsVerificacaoGeral("msg") vetMsg(2, 2) = rsVerificacaoGeral("num_ficha") vetMsg(2, 3) = rsVerificacaoGeral("questoes") Else vetMsg(2, 1) = "Faltosos P e F" vetMsg(2, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'Total de faltosos F e P' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'F' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(3, 1) = rsVerificacaoGeral("msg") vetMsg(3, 2) = rsVerificacaoGeral("total") Else vetMsg(3, 1) = "Total de faltosos F e P" vetMsg(3, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'Faltosos F e P' msg, num_ficha, questoes " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'F' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(4, 1) = rsVerificacaoGeral("msg") vetMsg(4, 2) = rsVerificacaoGeral("num_ficha") vetMsg(4, 3) = rsVerificacaoGeral("questoes") Else vetMsg(4, 1) = "Faltosos F e P" vetMsg(4, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total de registro com menos de 40 char' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " Where Len(Questoes) < 40 " sqlVerificacaoGeral = sqlVerificacaoGeral & " select * from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where lote = '' " sqlVerificacaoGeral = sqlVerificacaoGeral & " or numero_ficha = '' " sqlVerificacaoGeral = sqlVerificacaoGeral & " or cod_prova = '' " sqlVerificacaoGeral = sqlVerificacaoGeral & " or faltoso = '' " sqlVerificacaoGeral = sqlVerificacaoGeral & " or faltoso2 = '' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(5, 1) = rsVerificacaoGeral("msg") vetMsg(5, 2) = rsVerificacaoGeral("total") Else vetMsg(5, 1) = "Total de registro com menos de 40 char" vetMsg(5, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total de marcacoes em branco' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and questoes like('%*%') " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(6, 1) = rsVerificacaoGeral("msg") vetMsg(6, 2) = rsVerificacaoGeral("total") Else vetMsg(6, 1) = "Total de marcacoes em branco" vetMsg(6, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'marcacoes em branco' msg, num_ficha, questoes " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and questoes like('%*%') " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(7, 1) = rsVerificacaoGeral("msg") vetMsg(7, 2) = rsVerificacaoGeral("num_ficha") vetMsg(7, 3) = rsVerificacaoGeral("questoes") Else vetMsg(7, 1) = "Marcacoes em branco" vetMsg(7, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total de marcacoes duplicadas' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and questoes like('%?%') " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(8, 1) = rsVerificacaoGeral("msg") vetMsg(8, 2) = rsVerificacaoGeral("total") Else vetMsg(8, 1) = "Total de marcacoes duplicadas" vetMsg(8, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'marcacoes duplicadas' msg, num_ficha, questoes " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and questoes like('%?%') " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(9, 1) = rsVerificacaoGeral("msg") vetMsg(9, 2) = rsVerificacaoGeral("num_ficha") vetMsg(9, 3) = rsVerificacaoGeral("questoes") Else vetMsg(9, 1) = "Marcacoes duplicadas" vetMsg(9, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total de presentes' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'P' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'P' " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(10, 1) = rsVerificacaoGeral("msg") vetMsg(10, 2) = rsVerificacaoGeral("total") Else vetMsg(10, 1) = "Total de presentes" vetMsg(10, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total de faltosos' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " sqlVerificacaoGeral = sqlVerificacaoGeral & " where faltoso = 'F' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and faltoso2 = 'F' " sqlVerificacaoGeral = sqlVerificacaoGeral & " and questoes like('%*%') " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(11, 1) = rsVerificacaoGeral("msg") vetMsg(11, 2) = rsVerificacaoGeral("total") Else vetMsg(11, 1) = "Total de faltosos" vetMsg(11, 2) = "0" End If 'montagem do sql sqlVerificacaoGeral = "" sqlVerificacaoGeral = sqlVerificacaoGeral & " select 'total geral de registros' msg, count(*) total " sqlVerificacaoGeral = sqlVerificacaoGeral & " from cartao_resp_le " 'executa sql Set rsVerificacaoGeral = db.Execute(sqlVerificacaoGeral) 'validacao do retorno If Not rsVerificacaoGeral.EOF Then vetMsg(12, 1) = rsVerificacaoGeral("msg") vetMsg(12, 2) = rsVerificacaoGeral("total") Else vetMsg(12, 1) = "Total geral de registros" vetMsg(12, 2) = "0" End If 'end comments by eliel 'SOMENTE SQL: select 'Total de faltosos P e F' msg, count(*) total from cartao_resp_le where faltoso = 'P' and faltoso2 = 'F' select 'Faltosos P e F' msg, numero_ficha, questoes from cartao_resp_le where faltoso = 'P' and faltoso2 = 'F' select 'Total de faltosos F e P' msg, count(*) total from cartao_resp_le where faltoso = 'F' and faltoso2 = 'P' select 'Faltosos F e P' msg, numero_ficha, questoes from cartao_resp_le where faltoso = 'F' and faltoso2 = 'P' select 'total de registro com menos de 60 char' msg, count(*) total from cartao_resp_le Where Len(Questoes) < 60 select * from cartao_resp_le where lote = '' or numero_ficha = '' or cod_prova = '' or faltoso = '' or faltoso2 = '' select 'total de marcacoes em branco' msg, count(*) total from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%*%') select 'marcacoes em branco' msg, numero_ficha, questoes from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%*%') select 'total de marcacoes duplicadas' msg, count(*) total from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%?%') select 'marcacoes duplicadas' msg, numero_ficha, questoes from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' and questoes like('%?%') select 'total de presentes' msg, count(*) total from cartao_resp_le where faltoso = 'P' and faltoso2 = 'P' select 'total de faltosos' msg, count(*) total from cartao_resp_le where faltoso = 'F' and faltoso2 = 'F' and questoes like('************************************************************') select 'total geral de registros em cartao' msg, count(*) total from cartao_resp_le select 'total de registros em candidato' msg, count(*) total from candidato c select 'total de registros em alocacao_candidato' msg, count(*) total from alocacao_candidato ac select 'total de registros em candidato que nao constam em alocacao' msg, count(*) total from candidato c where c.num_ficha not in (select num_ficha from alocacao_candidato) select c.* from candidato c where c.num_ficha not in (select num_ficha from alocacao_candidato) select 'total por cargo/prova em alocacao_candidato' msg, count(*), c.cod_prova from alocacao_candidato c group by c.cod_prova select 'total em alocacao_candidato q NAO ESTAO em cartao_resp_le' msg, count(*) total from alocacao_candidato c where c.num_ficha not in (select numero_ficha from Cartao_Resp_Le) select c.* from alocacao_candidato c where c.num_ficha not in (select numero_ficha from Cartao_Resp_Le) select 'total em cartao que NAO ESTAO em alocacao_candidato' msg, count(*) total from cartao_resp_le crl where crl.numero_ficha not in ( select num_ficha from alocacao_candidato c) select crl.* from cartao_resp_le crl where crl.numero_ficha not in (select num_ficha from alocacao_candidato c) select 'total em cartao que NAO ESTAO em candidato' msg, count(*) total from cartao_resp_le crl where crl.numero_ficha not in ( select num_ficha from candidato c) select crl.* from cartao_resp_le crl where crl.numero_ficha not in (select num_ficha from candidato c) select 'total de registros em alocacao_candidato e cartao' msg, count(*) total from alocacao_candidato c, cartao_resp_le crl where c.num_ficha = crl.numero_ficha select 'total geral de registros com inscricao duplicada' msg, count(crl.numero_ficha) total from cartao_resp_le crl group by crl.numero_ficha having count(crl.numero_ficha) > 1 select crl.lote, crl.numero_ficha, crl.questoes, al.num_seq_cartao from cartao_resp_le crl, alocacao_candidato al where crl.numero_ficha = al.num_ficha and al.cod_prova in (1,2) and crl.faltoso in ('P') and crl.faltoso2 in ('P') and (crl.questoes like('%?%') or crl.questoes like('%*%')) and crl.faltoso not in ('F') and crl.faltoso2 not in ('F') 28. Procedimento para colocar notas do resultado no ar (proximo passo apos o item 27 acima) //efetuar backup das tabelas classificacao, nota_candidato, cartao_resp_le //conferir peso, minima_acertos na tabela disciplina select * from disciplina //conferir quantidade em candidato e alocacao SELECT num_ficha FROM candidato WHERE (Num_Ficha NOT IN (SELECT num_ficha FROM alocacao_candidato)) //devem bater a quantidade nessas tabelas select count(*) from candidato select count(*) from alocacao_candidato insert into alocacao_candidato (num_ficha, cod_prova) select num_ficha, cod_cargo from candidato where num_ficha in (0163260,0164925,0169250,0169315,0169501, 0234915,0385379,0432458,0432547,0432598,0857815,1100033) //bater a quantidade nas tabelas cartao_resp_le e cartao_resp select count(*) from cartao_resp_le select count(*) from cartao_resp //verificar se exite codigo 999 select count(*) from cartao_resp_le where cod_prova = 999 insert into cartao_resp (numero_ficha,cod_prova,faltoso,faltoso2,questoes,lote,usr_cdm,data_cdm,usr_alt,data_alt) select numero_ficha,cod_prova,faltoso,faltoso2,questoes,lote,usr_cdm,data_cdm,usr_alt,data_alt from cartao_resp_le //ou insert into cartao_resp (numero_ficha,cod_prova,faltoso,faltoso2,questoes,lote,usr_cdm,data_cdm,usr_alt,data_alt) select numero_ficha,cod_prova,faltoso,faltoso2,questoes,lote,usr_cdm,data_cdm,usr_alt,data_alt from cartao_resp_le where cod_prova <> 999 //verifica se estao todos em alocacao SELECT Cod_Prova, Numero_Ficha FROM Cartao_Resp WHERE (Numero_Ficha NOT IN (SELECT num_ficha FROM alocacao_candidato)) //verifica se estao todos em candidato SELECT Cod_Prova, Numero_Ficha FROM Cartao_Resp WHERE (Numero_Ficha NOT IN (SELECT num_ficha FROM candidato)) //consistencia select count(*) from candidato select count(*) from alocacao_candidato select count(*) from cartao_resp_le select count(*) from cartao_resp //processar gararito no vb (lembrar do codigo do concurso no case) //conferir se os pesos em nota_candidato estao batendo com o do edital //conferir as pontuacoes de um cartao com as que estao em nota_candidato //(pode-se usar alteracaocartao - programa em delphi) para conferir, caso //nao tenha um cartao disponivel. //lembre de alterar para flag 1 em Seguranca o campo PodeAlterarGabarit //do referido concurso //para gerar classificacao no vb (conferir criterios para classificacao no //edital e montar o sql compativel com os critérios) //exemplo de um view utilizada como parte de um critério SELECT TOP 100 PERCENT dbo.Disciplina.Grupo, dbo.Nota_Candidato.Num_Ficha, dbo.Candidato.Cod_Cargo, COUNT(dbo.Nota_Candidato.Num_Ficha) AS TotInsc, SUM(dbo.Nota_Candidato.Num_Acertos) AS TotAcertos, SUM(dbo.Disciplina.Questao_Final - (dbo.Disciplina.Questao_Inicial - 1)) AS totQuestoes, SUM(dbo.Disciplina.Questao_Final - (dbo.Disciplina.Questao_Inicial - 1)) * 0.5 AS totQuestoesAcertos, SUM(dbo.Nota_Candidato.Nota) AS TotNota, dbo.ProvaGrupo.Nota_Minima AS MinimoQuestoesGrupo FROM dbo.Candidato INNER JOIN dbo.view_aprovados ON dbo.view_aprovados.Num_Ficha = dbo.Candidato.num_ficha INNER JOIN dbo.Nota_Candidato ON dbo.Nota_Candidato.Num_Ficha = dbo.Candidato.num_ficha INNER JOIN dbo.Disciplina ON dbo.Nota_Candidato.Cod_Prova = dbo.Disciplina.Cod_Prova AND dbo.Nota_Candidato.Sigla_Disc = dbo.Disciplina.Sigla INNER JOIN dbo.Prova ON dbo.Nota_Candidato.Cod_Prova = dbo.Prova.Cod INNER JOIN dbo.ProvaGrupo ON dbo.Disciplina.Cod_Prova = dbo.ProvaGrupo.Cod_Prova AND dbo.Disciplina.Grupo = dbo.ProvaGrupo.Grupo WHERE (dbo.Candidato.Flag_Exclusao = 'N') AND (dbo.Prova.Sigla = 'OBJ') GROUP BY dbo.Disciplina.Grupo, dbo.Nota_Candidato.Num_Ficha, dbo.ProvaGrupo.Nota_Minima, dbo.Candidato.Cod_Cargo HAVING (SUM(dbo.Nota_Candidato.Num_Acertos) >= dbo.ProvaGrupo.Nota_Minima) ORDER BY dbo.Nota_Candidato.Num_Ficha //no vb... SELECT Num_Ficha, SUM(TotQuestoes) as TotQuestoes, SUM(TotAcertos) as TotAcertos, SUM(TotNota) as TotNota, COUNT(Grupo) As QntGrupo FROM dbo.vw_Tempclassificacao GROUP BY Num_Ficha HAVING COUNT(Grupo) = 2 and SUM(TotNota) >= '40' //conferindo... select * from nota_candidato where num_ficha in ( 0863076 ) //gerar classificacao no vb (lembrar de adicionar no vb o idConcurso nas //case de insert em classificacao //sql para conferencia com o relatorio gerado no access (trtrj2004) //resultado final - varias_materias SELECT nc.nota, nc.sigla_disc FROM nota_candidato nc INNER JOIN candidato c ON c.num_ficha = nc.num_ficha INNER JOIN cargo cg ON cg.cod = c.cod_cargo INNER JOIN prova p ON p.cod_cargo = cg.cod INNER JOIN disciplina d ON d.sigla = nc.sigla_disc AND p.cod = d.cod_prova WHERE nc.num_ficha in (7316933) GROUP BY nc.sigla_disc, nc.nota, d.Questao_Inicial ORDER BY d.Questao_Inicial 29. Sql para gerar redacao SELECT Count(c.num_ficha) as Count_Reg FROM Candidato c, alocacao_candidato ac WHERE c.Flag_Alocacao = 'S' and c.Cod_Cargo <> '9' and c.num_ficha = ac.num_ficha SELECT Candidato.Nome as CNome, Local_Prova.Nome as LNome, Candidato.Num_Ficha, Candidato.Num_Ident, Prova.Id_Horario, Candidato.Orgao_Ident, Candidato.Estado_Ident, Sala.Nome as Sala, Cargo.Sigla as Sigla, Alocacao_Candidato.Cod_Local , Alocacao_Candidato.Cod_Bloco, Alocacao_Candidato.Cod_Setor, Alocacao_Candidato.Cod_Grupo, Alocacao_Candidato.Cod_Sala, Alocacao_Candidato.Num_Cartao_Sala, Cargo.Sigla, (Candidato.num_ident + ' ' + candidato.orgao_ident + ' ' + candidato.estado_ident) AS identidade, Local_Prova.Codigo_Local as CodLocal, Bloco.Codigo_Bloco as CodBloco, Setor.Codigo_Setor as CodSetor, Sala.Codigo_Sala as CodSala FROM Local_Prova, Bloco, Setor, Grupo, Sala, Alocacao_Candidato, Candidato, Cargo, Prova WHERE (Local_Prova.Codigo_Local = Bloco.Codigo_Local) and (Bloco.Codigo_Local = Setor.Codigo_Local) and (Bloco.Codigo_Bloco = Setor.Codigo_Bloco) and (Setor.Codigo_Local = Grupo.Codigo_Local) and (Setor.Codigo_Bloco = Grupo.Codigo_Bloco) and (Setor.Codigo_Setor = Grupo.Codigo_Setor) and (Grupo.Codigo_Local = Sala.Codigo_Local) and (Grupo.Codigo_Bloco = Sala.Codigo_Bloco) and (Grupo.Codigo_Setor = Sala.Codigo_Setor) and (Grupo.Codigo_Grupo = Sala.Codigo_Grupo) and (Sala.Codigo_Local = Alocacao_Candidato.Cod_Local) and (Sala.Codigo_Bloco = Alocacao_Candidato.Cod_Bloco) and (Sala.Codigo_Setor = Alocacao_Candidato.Cod_Setor) and (Sala.Codigo_Grupo = Alocacao_Candidato.Cod_Grupo) and (Sala.Codigo_Sala = Alocacao_Candidato.Cod_Sala) and (Alocacao_Candidato.Num_Ficha = Candidato.Num_Ficha) and (Alocacao_Candidato.Cod_Prova = Prova.Cod) and (Candidato.Cod_Cargo = Cargo.Cod) and (Cargo.Cod = Prova.Cod_Cargo) and (Cargo.Cod <> '9') ORDER BY Local_prova.Codigo_Local, Prova.Data, Prova.Id_Horario, Bloco.Nome, Setor.Nome, Sala.Nome, Candidato.Nome, Candidato.Data_Nasc 30. Criterio de classificacao e desempate de grupo de disciplinas (conhecimentos especificos - CES) e lingua portuguesa (LPO), usando uma view no concurso AFPR2004 SELECT C.Num_Ficha, C.Opcao_Vaga, CP.NotaFinal, C.Data_Nasc, vw1.TOTNOTA AS CES, vw2.TOTNOTA AS LPO, CASE WHEN (DATEDIFF(yy,C.Data_Nasc,'2004/09/23') - 59) < 0 THEN '0' ELSE (DATEDIFF(yy,C.Data_Nasc,'2004/09/23') - 59) END AS IdadeOrdem FROM Candidato C, classificacao CP, vw_ClassificacaoCargo vw1, vw_ClassificacaoCargo vw2 WHERE C.num_ficha = CP.num_ficha and C.cod_cargo = '2' and CP.Flag_Class_Pratica = 'S' and C.Flag_Exclusao = 'N' and C.num_ficha = vw1.num_ficha and vw1.grupo = 'CONHECIMENTOS ESPECÍFICOS' and C.num_ficha = vw2.num_ficha and vw2.grupo = 'LÍNGUA PORTUGUESA' GROUP BY C.Num_Ficha, C.Opcao_Vaga, CP.NotaFinal, C.Data_Nasc , vw1.TOTNOTA, vw2.TOTNOTA ORDER BY C.Opcao_Vaga, CP.NotaFinal DESC, IdadeOrdem DESC, vw1.TOTNOTA DESC, vw2.TOTNOTA DESC, c.data_nasc 31. Utilizacao com verificacao, validacao e comparacao de campo select cl.num_ficha, cl.nota_final as nota_final_cl, nm.inscricao, nm.nota_final as nota_final_nm, CASE WHEN cl.nota_final = nm.nota_final THEN 'ok' ELSE 'erro' END AS IdadeOrdem from classificacao cl, nota_memorial_e_titulo nm where cl.nota_final is not null and cl.flag_class = 'S' and cl.num_ficha = nm.inscricao 32. Update com select update nota_memorial_e_titulo set nota_final = ( select (nm.nota_memorial + nm.nota_titulo + nm.nota_pesquisa + cl.nota) as nota_final from nota_memorial_e_titulo nm, classificacao cl, candidato c where nm.inscricao = cl.num_ficha and c.num_ficha = cl.num_ficha and nota_memorial_e_titulo.inscricao = cl.num_ficha) select nm.nota_memorial, nm.nota_titulo, nm.nota_pesquisa, cl.nota, nm.nota_final, (nm.nota_memorial + nm.nota_titulo + nm.nota_pesquisa + cl.nota) as nota_final2 from nota_memorial_e_titulo nm, classificacao cl where nm.inscricao = cl.num_ficha select nm.nota_memorial, nm.nota_titulo, nm.nota_pesquisa, cl.nota, (nm.nota_memorial + nm.nota_titulo + nm.nota_pesquisa + cl.nota) as nota_final from nota_memorial_e_titulo nm, classificacao cl where nm.inscricao = cl.num_ficha update classificacao set classificacao.nota_final = ( select (nm.nota_memorial * nm.peso_memorial + nm.nota_pesquisa * nm.peso_pesquisa + nm.nota_titulo * nm.peso_titulo ) as nota_final from classificacao cl, candidato c, nota_memorial_e_titulo nm, cargo cg, opcao_vaga ov where cl.num_ficha = c.num_ficha and c.cod_cargo = cg.cod and cg.sigla in ('S01','S02','S03','S04','S05') and nm.inscricao = cl.num_ficha and c.opcao_vaga = ov.cod and cl.nota_final is not null and c.flag_exclusao = 'N' ) where classificacao.num_ficha in ( '8002541','8002754','8011737','8033501', '8047928','8066612','8073830','8075166', '8078360','8081549','8083312','8085013', '8095868','8140090','8162530' ) 33. select com select select * from candidato c where c.num_ficha not in (select num_ficha from classificacao) order by cod_cargo 34. Criterio de classificacao e desempate //assistente de pesquisa SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva FROM classificacao AS cl, candidato AS c, nota_memorial_e_titulo AS nm, cargo AS cg, opcao_vaga AS ov WHERE cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ('S06','S08','S09','S10','S13','S15','S17') and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and cl.flag_class_final = 'S' and cl.flag_class = 'S' and c.flag_exclusao = 'N' and cl.nota_final is not null and cl.nota_final > 0 and (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) >= 25 and (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) >= 16 and (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) >= 3 and (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) >= 6 and (nm.nota_memorial*nm.peso_memorial)>=40 ORDER BY ov.cod, cl.nota_final DESC , 3 DESC , 4 DESC , 5 DESC , 6 DESC , c.data_nasc; //tecnologista select cl.num_ficha, c.nome as nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) as nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) as nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) as nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) as nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica, ov.cod, ov.nome as opcao_vaga, cg.sigla, cg.nome as cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva from classificacao cl, candidato c, nota_memorial_e_titulo nm, cargo cg, opcao_vaga ov where cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ('S18','S19','S21','S22') and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and cl.flag_class_final = 'S' and cl.flag_class = 'S' and c.flag_exclusao = 'N' and cl.nota_final is not null and cl.nota_final > 0 and (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) >= 25 and (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) >= 16 and (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) >= 3 and (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) >= 6 and (nm.nota_memorial*nm.peso_memorial)>=40 order by ov.cod, cl.nota_final desc, 3 desc, 4 desc, 5 desc, 6 desc, c.data_nasc //analista c&t pleno select cl.num_ficha, c.nome as nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) as nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) as nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) as nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) as nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica , ov.cod, ov.nome as opcao_vaga, cg.sigla, cg.nome as cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva from classificacao cl, candidato c, nota_memorial_e_titulo nm, cargo cg, opcao_vaga ov where cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ('S24','S25','S26','S27','S28','S29','S30','S31','S33','S34','S35','S36','S37','S38','S39','S40','S41') and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and cl.flag_class_final = 'S' and cl.flag_class = 'S' and c.flag_exclusao = 'N' and cl.nota_final is not null and cl.nota_final > 0 and (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) >= 25 and (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) >= 16 and (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) >= 3 and (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) >= 6 order by ov.cod, cl.nota_final desc, 3 desc, 4 desc, 5 desc, 6 desc, c.data_nasc //pesquisador select ov.cod, ov.nome as opcao_vaga, cg.sigla, cg.nome as cargo, cl.num_ficha, c.nome as nome, cl.nota_final, nm.nota_memorial, nm.nota_pesquisa, c.data_nasc, cl.nota AS nota_objetiva, nm.nota_titulo, cl.class_pratica from classificacao cl, candidato c, nota_memorial_e_titulo nm, cargo cg, opcao_vaga ov where cl.num_ficha = c.num_ficha and c.cod_cargo = cg.cod and cg.sigla in ('S01','S02','S03','S04','S05') and nm.inscricao = cl.num_ficha and c.opcao_vaga = ov.cod and cl.nota_final is not null and cl.nota_final > 0 and (nm.nota_memorial*nm.peso_memorial)>=30 and (nm.nota_pesquisa*nm.peso_pesquisa)>=18 and cl.flag_class_final = 'S' and c.flag_exclusao = 'N' order by ov.cod, cl.nota_final desc, nm.nota_pesquisa desc, nm.nota_memorial desc, c.data_nasc //todos com nota acima de zero com union de todas com zero (Access) SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva, 'Classificado' AS status FROM classificacao AS cl, candidato AS c, nota_memorial_e_titulo AS nm, cargo AS cg, opcao_vaga AS ov WHERE cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ( 'S06','S08','S09','S10','S13','S15','S17', 'S18','S19','S21','S22','S24','S25','S26', 'S27','S28','S29','S30','S31','S33','S34', 'S35','S36','S37','S38','S39','S40','S41', 'S01','S02','S03','S04','S05' ) and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and c.flag_exclusao = 'N' and cl.nota_final > 0 and cl.flag_class_final = 'S' union SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva, 'Eliminado' AS status FROM classificacao AS cl, candidato AS c, nota_memorial_e_titulo AS nm, cargo AS cg, opcao_vaga AS ov WHERE cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ( 'S06','S08','S09','S10','S13','S15','S17', 'S18','S19','S21','S22','S24','S25','S26', 'S27','S28','S29','S30','S31','S33','S34', 'S35','S36','S37','S38','S39','S40','S41', 'S01','S02','S03','S04','S05' ) and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and c.flag_exclusao = 'N' and cl.nota_final > 0 and cl.flag_class_final = 'N' union SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota AS nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, 0 as nota_memorial, 0 AS validacao_nota_memorial, 0 as nota_titulo, 0 AS validacao_nota_titulo, 0 as nota_pesquisa, 0 AS validacao_nota_pesquisa, cl.nota AS nota_objetiva, 'Eliminado' AS status FROM classificacao AS cl, candidato AS c, cargo AS cg, opcao_vaga AS ov WHERE c.num_ficha = cl.num_ficha and cg.cod = c.cod_cargo and c.opcao_vaga=ov.cod and c.flag_exclusao = 'N' and cl.nota_final = 0 ORDER BY c.nome //2 exemplo //todos com nota acima de zero com union de todas com zero (SQLServer) SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, nm.nota_memorial, (nm.nota_memorial*nm.peso_memorial) AS validacao_nota_memorial, nm.nota_titulo, (nm.nota_titulo*nm.peso_titulo) AS validacao_nota_titulo, nm.nota_pesquisa, (nm.nota_pesquisa*nm.peso_pesquisa) AS validacao_nota_pesquisa, cl.nota AS nota_objetiva, CASE WHEN cl.nota_final >= 60 THEN 'Classificado' ELSE 'Eliminado' END AS status FROM classificacao AS cl, candidato AS c, nota_memorial_e_titulo AS nm, cargo AS cg, opcao_vaga AS ov WHERE cl.num_ficha = c.num_ficha and cg.cod = c.cod_cargo and cg.sigla in ( 'S06','S08','S09','S10','S13','S15','S17', 'S18','S19','S21','S22','S24','S25','S26', 'S27','S28','S29','S30','S31','S33','S34', 'S35','S36','S37','S38','S39','S40','S41', 'S01','S02','S03','S04','S05' ) and nm.inscricao=cl.num_ficha and c.opcao_vaga=ov.cod and c.flag_exclusao = 'N' and cl.nota_final > 0 union SELECT cl.num_ficha, c.nome AS nome, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and cl.num_ficha = nc1.num_ficha) AS nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and cl.num_ficha = nc2.num_ficha) AS nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and cl.num_ficha = nc3.num_ficha) AS nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and cl.num_ficha = nc4.num_ficha) AS nota_ing, c.data_nasc, cl.nota AS nota_final, cl.class_pratica, ov.cod, ov.nome AS opcao_vaga, cg.sigla, cg.nome AS cargo, 0 as nota_memorial, 0 AS validacao_nota_memorial, 0 as nota_titulo, 0 AS validacao_nota_titulo, 0 as nota_pesquisa, 0 AS validacao_nota_pesquisa, cl.nota AS nota_objetiva, 'Eliminado' AS Status FROM classificacao AS cl, candidato AS c, cargo AS cg, opcao_vaga AS ov WHERE c.num_ficha = cl.num_ficha and cg.cod = c.cod_cargo and c.opcao_vaga=ov.cod and c.flag_exclusao = 'N' and cl.nota_final = 0 ORDER BY c.nome 35. Transformando linhas de um query em colunas select nc.num_ficha, nc.nota from nota_candidato nc order by nc.num_ficha select nc.num_ficha, (select nc1.nota from nota_candidato nc1 where nc1.sigla_disc in ('CES') and nc.num_ficha = nc1.num_ficha) as nota_ces, (select nc2.nota from nota_candidato nc2 where nc2.sigla_disc in ('LPO') and nc.num_ficha = nc2.num_ficha) as nota_lpo, (select nc3.nota from nota_candidato nc3 where nc3.sigla_disc in ('RLO') and nc.num_ficha = nc3.num_ficha) as nota_rlo, (select nc4.nota from nota_candidato nc4 where nc4.sigla_disc in ('ING') and nc.num_ficha = nc4.num_ficha) as nota_ing from nota_candidato nc 36. Executando varios sqls baseando-se em opcoes if (select cod from cargo where cod = 100) = 1 begin select * from candidato ORDER BY Candidato.Nome; end ELSE begin select * from candidato ORDER BY Candidato.Num_ficha; END 37. Utilizando insert com select no sqlserver insert into alocacao_candidato (num_ficha, cod_prova) select num_ficha, cod_cargo from candidato where num_ficha in (0163260,0164925,0169250,0169315,0169501, 0234915,0385379,0432458,0432547,0432598,0857815,1100033) 38.