Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''case''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 15 registros

  1. vagner.analista

    Condição de Select com valor null

    Senhores boa tarde, alguém pode me ajudar? Tenho a seguinte situação, um campo data em duas tabelas, onde caso o contrato tenha aditivo o campo data da tabela TITMCNTADITIVO, fica preenchido. caso o contrato não tem aditivo ela fica com o valor null. Então caso o valor dessa tabela aditivo estiver null, eu gostaria de apresentar o campo data da tabela TITMCNT do contrato que tem a data fim do contrato, com o select abaixo eu consigo saber se tem aditivo ou não: SELECT TOP 1 (DATA + 90) AS DATAFIM FROM TITMCNTADITIVO (NOLOCK) WHERE 1=1 AND CODCOLIGADA = 1 AND IDCNT = 72 Neste caso este contrato não tem aditivo, então, gostaria que ele executasse outro SELECT: SELECT (DATAFIM + 90) AS DATA_FIM FROM TITMCNT WHERE IDCNT = '72' O mais lógico que tentei foi assim, mas não dá certo: SELE CT TOP 1 (DATA + 90) AS DATAFIM, CASE (DATA) WHEN IS NULL THEN ( SELECT (DATAFIM + 90) AS DATA_FIM FROM TITMCNT WHERE IDCNT = '72' ) END AS DATAFIM FROM TITMCNTADITIVO (NOLOCK) WHERE 1=1 AND CODCOLIGADA = 1 AND IDCNT = 72
  2. ndias

    select count case

    preciso fazer um select assim: Select count(CASE WHEN tbl1.dtCadastro = CURDATE() THEN '' ELSE NULL END) as qtdDia, tbl2.id from tbl1 inner join tbl2 on tbl2.id = tbl1.id and tbl2.id = 123 where tbl1.int = 190273 eu quero que o Count me traga q a quantidade de registros no dia, e por por conta do tbl2.id = 123 ele está trazendo apenas um alguém pode me ajudar, por favor?
  3. alecram28

    Exercicio Javascript switch case

    Bom dia. Tenho o seguinte exercicio para fazer, comecei a fazer mas nao consigo terminar e nao sei se é bem isso. Se alguem puder me ajudar, sou iniciante. Obrigado! Questao: Usando HTML, CSS e JS, escreva um algoritmo que leia o código de uma operação a partir o teclado e que realize a operação associada a esse código. O código é um valor inteiro. Os códigos e operações são listados abaixo: 1 Área de um retângulo. Os valores da base e da altura do retângulo devem ser informados pelo usuário. OBS: aretângulo = base * altura. 2 Área de um triângulo. Os valores da base e da altura do triângulo devem ser informados pelo usuário. OBS: atriângulo = (base * altura) / 2. 3 Área de um círculo. O valor do raio do círculo deve ser informado pelo usuário. OBS: acírculo = 3,14 * (raio)2 4 Área de um trapézio. Os valores da base maior, da base menor e da altura do trapézio devem ser informados pelo usuário. OBS: atrapézio = [(base maior + base menor) * altura] / 2. Meu código: html: <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Área figuras</title> <link rel="stylesheet" href="pratica06exercicio04.css"> <script src="pratica06exercicio04.js" type="text/javascript"></script> </head> <body> <main> <h1>Área de Figuras Geométricas</h1> <h3>Informe o número da operação desejada:</h3> <h4>1- Área Retângulo<br>2-Área Triângulo<br>3-Área Círculo<br>4-Área Trapézio</h4> <div class="numero">Código <input type="number"id="cod"></div> <button onclick="codigo()">OK</button> <div id="operandos"></div> <div id="resultado"></div> </main> </body> </html> js: function codigo() { var c = document.getElementById("cod"); switch (c) { case '1': operandosRetangulo() break; case '2': operandosTriangulo() break; case '3': operandosCirculo() break; case '4': operandosTrapezio() break; } } function limparTela() { var operandos = document.getElementById("operandos"); var resultado = document.getElementById("resultado"); operandos.style.display = "none"; resultado.style.display = "none"; } function operandosCirculo() { limparTela(); var operandos = document.getElementById("operandos"); operandos.innerHTML = "Informe o raio: <input type='number' id='raio'>" + "<br/>" + "<button onclick='areaCirculo ()'>OK</button>"; operandos.style.display = "block"; } function operandosRetangulo() { limparTela(); var operandos = document.getElementById("operandos"); operandos.innerHTML = "Informe a base: <input type='number' id='base'>" + "<br/>" + "Informe a altura: <input type='number'id='altura'>" + "<br/>" + "<button onclick='areaRetangulo ()'>OK</button>"; operandos.style.display = "block"; } function operandosTriangulo() { limparTela(); var operandos = document.getElementById("operandos"); operandos.innerHTML = "Informe a base: <input type='number' id='baset'>" + "<br/>" + "Informe a altura: <input type='number'id='alturat'>" + "<br/>" + "<button onclick='areaTriangulo ()'>OK</button>"; operandos.style.display = "block"; } function operandosTrapezio() { limparTela(); var operandos = document.getElementById("operandos"); operandos.innerHTML = "Informe a base maior: <input type='number' id='basema'>" + "<br/>" + "Informe a base menor: <input type='number' id='baseme'>" + "<br/>" + "Informe a altura: <input type='number'id='alturaz'>" + "<br/>" + "<button onclick='areaTrapezio ()'>OK</button>"; operandos.style.display = "block"; } function areaCirculo() { var raioSTR = document.getElementById("raio").value; var raio = parseFloat(raioSTR); var area = 3.14 * Math.pow(raio, 2); var resultado = document.getElementById("resultado"); resultado.innerHTML = area; resultado.style.display = "block"; } function areaRetangulo() { var baseSTR = document.getElementById("base").value; var alturaSTR = document.getElementById("altura").value; var base = parseFloat(baseSTR); var altura = parseFloat(alturaSTR); var area = base * altura; var resultado = document.getElementById("resultado"); resultado.innerHTML = area; resultado.style.display = "block"; } function areaTriangulo() { var bt = document.getElementById("baset").value; var at = document.getElementById("alturat").value; var baset = parseFloat(bt); var alturat = parseFloat(at); var areat = (bt * at) / 2; resultado.innerHTML = areat; resultado.style.display = "block"; } function areaTrapezio() { var bma = document.getElementById("basema").value; var bme = document.getElementById("baseme").value; var az = document.getElementById("alturaz").value; var areatra = ((bma + bme) * az) / 2; resultado.innerHTML = areatra; resultado.style.display = "block"; }
  4. welwvs

    Problema em chamar var dentro do switch

    Olá povoestou tendo um problema e não estou descobrindo oque eu estou fazendo de errado. Eu criei um var = currentUser; Em seguida no switch, dentro de um case: "LOGAR" eu queria chamar a currentUser para receber uns valores E depois em outro case: "PING2" eu queria trabalhar com os dados que salvei na currentUser. Eu percebi alguns problemas que no case: "PING2" A currentUser estava vazia, mais no case "LOGAR" ela realmente recebeu os valores usei um console.log para ter certeza que foram salvas. eu estou com duvidas se no case: "LOGAR" eu chamei o var currentUser de forma correta, porque ele só tem valores dentro dele apenas no case: "LOGAR" nos outros case ele fica vazio var shortId = require('shortid');//import shortid lib var dgram = require('dgram');// importa a biblioteca do node para sockets UDP var socket = dgram.createSocket('udp4'); var clients = [];//storage clients var clientLookup = {};// cliends search engine var sockets = {};//storage sockets var database_model = require('./Models/database_model'); database_model.connect(function (err_connect) { }); socket.on('message', function(message,datagram_info) {//"message" armazena o pacote JSON, "datagram_info" armazena o IP e a PORTA do cliente //que fez a abertura do socket (ex: 127.0.0.1 e 8080) console.log('O servidor recebeu uma messagem: '+message+' de '+datagram_info.address); var data = JSON.parse(message);//converte o conteudo do pacote JSON message var currentUser;// nao ta recebendo nada não sei porque. switch(data.id ) { //começa case "PING"://se estivessemos utlizando TCP seria socket.on('PING',function(){ //processamento do socket}); como eu faco em console.log(currentUser); console.log('[INFO] teste ping foi recebido !!! '); var response = "PONG"+','+"pong!!!"+','+"test";//formata os dados com o separador virgula para serem enviados de volta ao Sender var msg = new Buffer(response);//bufering console.log('send response to client'); //enviando para o cliente, Sending Messages Back to Sender "Socket.Emit" socket.send(msg, 0, msg.length, datagram_info.port,//port of Sender datagram_info.address//IP of Sender ); break; //termina case "LOGAR": console.log('[INFO] Player: ' + data.nome + ', ' + data.senha + ' connected!'); database_model.verify_fk1(data.nome, data.senha, function ( result) { if (result == true) { console.log("Os Dados do usuario estão corretos"); console.log('[INFO] O usuario ' + data.nome + ' conectou. Carregando informações ... !'); var response = "RespostaLOGAR"+','+"TODOS OS DADOS FORAM CARREGADOS COM SUSSESSO, você ESTA LIBERADO PARA SELEÇÃO DE PERSONAGEM"; var msg = new Buffer(response); console.log('O pacote de reposta do login com sussesso foi enviada'); socket.send(msg, 0, msg.length, datagram_info.port,//port of Sender datagram_info.address//IP of Sender ); database_model.carregardados(data.nome, function (err, rows){ if (err) { console.error(err); } console.log('[INFO] cheguei com os dados: **************'); console.log('Cli_id: '+rows[0].cli_id); console.log('cli_personagem1: '+ rows[0].cli_personagem1); console.log('cli_personagem2: '+ rows[0].cli_personagem2); console.log('cli_personagem3: '+ rows[0].cli_personagem3); console.log('cli_personagem4: '+ rows[0].cli_personagem4); console.log('[INFO] fim **************'); currentUser = { name:data.nome, id:shortId.generate(), socketID:socket.id, pass:data.senha, port:datagram_info.port, address:datagram_info.address, cliID:rows[0].cli_id, cliPERID1:rows[0].cli_personagem1, cliPERID2:rows[0].cli_personagem2, cliPERID3:rows[0].cli_personagem3, cliPERID4:rows[0].cli_personagem4 } clients.push(currentUser);//add currentUser in clients list clientLookup[currentUser.id] = currentUser;//add client in search engine sockets[currentUser.socketID] = socket;//add currentUser socket console.log('Dados armazenados no currentUser: '+currentUser.id+',' +currentUser.name+',' +currentUser.pass+',' +currentUser.cliID+',' +currentUser.cliPERID1+',' +currentUser.cliPERID2+',' +currentUser.cliPERID3+',' +currentUser.cliPERID4+','); console.log('Total players: ' + clients.length); var response = "RespostaLOGAR2"+','+currentUser.id; var msg = new Buffer(response); console.log('O pacote de reposta do login com sussesso foi enviada'); socket.send(msg, 0, msg.length, datagram_info.port,//port of Sender datagram_info.address//IP of Sender ); }); } else { console.log("Loguin ou senha incorretos"); var response = "INCORRECT_PASS"+','+"Usuario ou senha estão incorretos"; var msg = new Buffer(response); console.log('pacote de erro no loguin enviado'); socket.send(msg, 0, msg.length, datagram_info.port,//port of Sender datagram_info.address//IP of Sender ); } }); break; case "PING2": console.log(currentUser);; console.log('[INFO] nome do per foi pedido'); var response = "PONG2"+','+"casa";//aqui var msg = new Buffer(response);//bufering console.log('send response to client'); //enviando para o cliente, Sending Messages Back to Sender "Socket.Emit" socket.send(msg, 0, msg.length, datagram_info.port,//port of Sender datagram_info.address//IP of Sender ); break; }//END-SWITCH });
  5. Olá baseado no código abaixo montei um switch ao qual o propósito fosse que em cada hora ou maior do que determinado horário e baseado no mesmo horário fosse mostrada uma determinada informação – só que mesmo quando chega no segundo horário '18:50:00’ ele continua mantendo a informação do primeiro horário em outras palavras ele não muda o que estari faltando no código do swith case abaixo para que a informação retorna-sse corretamente <?php // DEFINE O FUSO HORARIO COMO O HORARIO DE BRASILIA date_default_timezone_set('America/Sao_Paulo'); //echo date('h:i:s').'<br />'; //Resultado: 06:52:49 //HORA FORMATO BRASILEIRO $hora = date('H:i:s'); //Resultado: 18:52:03 switch (true) { case ($hora == '16:30:00' || $hora >= '16:30:00'): echo 'Informação da Hora'; break; case ($hora == '18:50:00' || $hora >= '18:50:00'): echo 'Informação do Horário'; break; } ?> NO AGUARDO SE ALGUEM PUDER ME AJUDAR E DESDE JÁ AGRADEÇO
  6. Danilo Mota

    Instrução case com operação de campos em Expressão

    Pessoal, estou com um problema para definir um campo de data: Se a hora do campo estilo datetime for menor que 06:00 então eu preciso que retorne a data do dia anterior. Se a hora do campo for maior, retornar a própria data do campo. Tentei fazer assim: SELECT CASE WHEN A.DATUM_LIEF-TRUNC(A.DATUM_LIEF)<0,25 THEN A.DATUM_LIEF-1 ELSE A.DATUM_LIEF END AS DATA FROM AG_CORE_PRD.AUFTRAEGE A obtive o erro ORA-00905: palavra-chave não encontrada Alguém sabe o motivo do erro?
  7. diulio

    Comparação if ou switch

    Bom dia a todos, gostaria de uma ajuda para adicionar uma classe no maior número, segundo maior número e o menor número. Tenho uma variável $Resultado que está fazendo uma comparação dos números e quando localiza um número igual soma +1, blz ate aqui está tranquilo. Aí tenho uma tabela que monta o $Resultado linha a linha com a soma de quantos números foram iguais para cada linha. Agora minha dúvida como faço para colocar uma classe (colorindo o texto), fiz dois testes um com IF que funciona mais não como eu gostaria e um com SWITCH que não funciona como eu gostaria, segue código abaixo <?php switch ($Resultado) { case '10': case '9': case '8': case '7': case '6': case '5': case '4': case '3': case '2': case '1': # code... echo "class='success text-success text-center'"; break; case '10': case '9': case '8': case '7': case '6': case '5': case '4': case '3': case '2': case '1': # code... echo "class='info text-info text-center'"; break; case '10': case '9': case '8': case '7': case '6': case '5': case '4': case '3': case '2': case '1': # code... echo "class='danger text-danger text-center'"; break; default: # code... break; } ?> Nesse código acima está "colorindo" (success = verde) todos os resultados. A minha ideia é quando localizar o maior número aplica a classe (success = verde) e passa para a próxima comparação quando localizar o segundo maior número aplica a classe (info = azul) e depois para ultima comparação e quando localizar o menor número aplicar a classe (danger = vermelho). Como seria a melhor opção para essa comparação? Agora tentei com IF e funciona ate certo ponto, segue abaixo o codigo <?php if( $totalAcertos == 10 || $totalAcertos == 9) { echo "class='success text-success'"; } elseif ($totalAcertos == 9 || $totalAcertos == 8) { # code... echo "class='info text-info'"; } elseif ($totalAcertos == 2 || $totalAcertos == 1 || $totalAcertos == 0) { # code... echo "class='danger text-danger'"; } ?> Nesse caso também estou com o mesmo problema aplicando a classe nos dois números maiores (mas nem sempre será esses dois números, pois pode ter caso em que o número 8 ou 7... será o maior). Como seria a melhor maneira de fazer essa comparação? Desde já, muito obrigado. Caso eu não tenha sido muito claro por favor me avise que tenho explicar melhor.
  8. Doeslei

    Problema com case dentro do and

    olá estou com um problema numa consulta que estou desenvolvendo em pacote, quando tento rodar está me dando erro no case, o que estou fazendo de errado? select nvl(a.quantidade,0) qt_vend_mes , nvl(a.vl_isentas,0) vl_isentas , nvl(a.vl_outras,0) vl_outras , nvl(a.bc_icms,0) bc_icms , nvl(a.vl_desconto,0) vl_desconto , nvl(a.vl_contabil,0) - nvl(a.vl_desconto,0) vl_contabil , nvl(a.vl_contabil,0) vl_contabil2 , a.dt_ocorr , a.nr_nota , b.cd_estab,b.cd_estab_dest,b.cd_cme , substr(b.id_usuario,1,20) id_usuario , nvl(COTRIJAL.FNC_BUSCA_ESTABEL_DFP(d.cd_postoacerto),98) cd_estab_acerto -- , nvl(d.cd_postoacerto,98) cd_estab_acerto , w.cd_familia , w.dn_familia , w.cd_grupo , p.cd_produto , p.dn_produto , a.nr_matric , p.multiplicador from infsai a, nfsai b, cme c, cooperados d , w_param_pkg_vendas w , cae p where a.cd_emp = b.cd_emp and a.cd_estab = b.cd_estab and a.dt_ocorr = b.dt_ocorr and a.nr_nota = b.nr_nota and a.nr_seq_d = b.nr_seq_d and a.nr_matric = d.nr_matrcoop(+) and a.cd_estab not in ( 6, 7, 9, 14, 17, 38, 40, 41, 45, 47 ) --and nvl(COTRIJAL.FNC_BUSCA_ESTABEL_DFP(d.cd_postoacerto),98) between w.estab1 and w.estab2 and nvl(d.cd_postoacerto,98) between w.estab1 and w.estab2 and a.dt_ocorr between w.dt_inicial and w.dt_final and a.cd_emp = p.cd_emp and a.cd_produto = p.cd_produto and p.cd_emp = w.cd_emp and p.cd_prod_basic = w.cd_familia and w.sessao = 505386688 and a.cd_cme = c.cd_cme and (case WHEN :RELAT_PARA ='E' THEN ( c.ind_tipo_oper = 1 AND A.CD_CME NOT IN (59942,51215,61215,53207) or c.ind_tipo_oper = 13 AND A.CD_CME IN (59941,69941) or c.ind_tipo_oper = 0 AND A.CD_CME IN (59905,69905) or c.ind_tipo_oper = 7) ELSE (c.ind_tipo_oper = 1 AND A.CD_CME NOT IN (59942,51215,61215,53207) or c.ind_tipo_oper = 13 AND A.CD_CME IN (59941,69941) or c.ind_tipo_oper = 0 AND A.CD_CME IN (59905,69905)) END) and a.ind_canc = 1;
  9. jecastro

    Inserir um espaco em branco em um registro

    Pessoal, Estou tentando realizar a inserção de um espaço em branco dentro de uma String, mas não consigo, já tentei com Decode, com case, sempre dá algum erro. A regra seria a seguinte, tem uma matricula que pode receber numeros e letras. Só que as 4 primeiras teriam que ser separadas, não necessariamente precisando ter 4, mas nestes casos teria esse espaço em branco, em casos que existam as 4, pode continuar normal. Apos esses 4, começa, por padrão com um CD472343492843, sempre. Exemplo: EUSACD9484304934 EUA CD9843274329 Mas não consigo, já tentei pegar a SUBSTR e inserir. O código que eu fiz, seria mais ou menos assim: DECODE(SUBSTR(MATR.MATRICULAS_ID, 1,5) LIKE 'CD%', SUBSTR(MATR.MATRICULAS_ID, 1, 5) ||' '|| SUBSTR(MATR.MATRICULAS_ID, 6, LENGTH(MATR.MATRICULAS_ID))) Alguém tem uma forma de fazer isso com case, com o decode, aceito qualquer um. rs. Obrigada!
  10. fimiani_lucas

    Fazer um case com select

    Boa tarde, Não estou conseguindo fazer um select na clausa when do comando case para comparar duas querys. É possivel fazer isso? Segue exemplo: SELECT CASE( WHEN (SELECT MAX(R.PORC_IMPORTE) FROM GSI_PREVENTAS_FACTR_REPARTO R WHERE R.ID_PROYECTO = A.ID_PROYECTO ) > (SELECT MIN(R.PORC_IMPORTE) FROM GSI_PREVENTAS_FACTR_REPARTO R WHERE R.ID_PROYECTO = A.ID_PROYECTO ) THEN SIM END) EXISTE_CODIGO FROM GSI_PROYECTOS O erro que retorna quando tento fazer o código é o seguinte : ORA-00936
  11. Querendo_ser_Nerd

    Retornar apenas um valor na coluna

    Boa noite, Por favor, estou com seguinte problema, em uma coluna tenho valores de 0,2,3, porém eu preciso que minha consulta final retorne apenas o valor 0, caso no registro não tenha valor 0, retorne o valor 3. Estou tentando com o Case mais sem sucesso. Alguem poderia me ajudar. select p.produto,p.nome, (case when p,sequencia = 3 then 3 else 2 end) as valor from produtos p where p.status = 'A'
  12. Marcovisk

    Postgresql com Case e Sum

    Olá pessoal! Preciso de uma ajuda com uma consulta SQL no PostGreSQL (9.5). Entendo só o básico de SQL, e estou apanhando pra fazer uma consulta. Tenho uma tabela com a seguinte estrutura (simplificada) e registros. Data, Situação, Total 22/09 Aguardando 2 22/09 Dirigindo 4 22/09 Refeição 1 22/09 Dirigindo 3 22/09 Refeição 1 22/09 Aguardando 3 23/09 Aguardando 1 Preciso fazer uma SQL que me retorne os dados agrupados por situação, e somando a coluna total. Deveria ficar assim: Data Aguardando Dirigindo Refeição 22/09 5 7 2 23/09 1 0 0 Porém, já usei o case com sum e group by e o máximo que consegui foi o seguinte: Data Aguardando Dirigindo Refeição 22/09 5 0 0 // Gostaria que esses três registros ficassem em uma linha só. 22/09 0 7 0 // 22/09 0 0 2 // 23/09 1 0 0 A SQL que eu fiz é a seguinte: select data, (case when situacao='DIRIGINDO' then sum(total) end) as "Dirigindo", (case when situacao='REFEIÇÃO' then sum(total) end) as "Refeição", (case when situacao='AGUARDANDO' then sum(total) end) as "Aguardando" from jornada where codmotorista=3 group by data, situacao Alguém me mostra onde estou errando, por favor!? Muito obrigado!
  13. arthurvsp97

    condição dentro do WHERE

    Estou precisando fazer uma condição que verifica se uma variável é nula, porém não está dando certo. Nunca mexi com condições e variáveis dentro de SQL e estou bem perdido pra falar a verdade. alguém pode me ajudar? Obrigado. SELECT LANCAMENTO.COD_LANC, LANCAMENTO.NOME_LANC, LANCAMENTO.DATA_LANC, LANCAMENTO.DATA_REFERENCIA_LANC, LANCAMENTO.VALOR_LANC, LANCAMENTO.OBSERVACAO_LANC, LANCAMENTO.COD_PROPRI_LANC, LANCAMENTO.HISTORICO_LANC, LANCAMENTO.QUANTIDADE_LANC, LANCAMENTO.NOME_SUB_GRUPO_LANC, LANCAMENTO.NOME_UNIDADE_LANC, GRUPO.NOME_GRUPO, PROPRIEDADE.NOME_PROPRI, TIPO.NOME_TIPO FROM PROPRIEDADE INNER JOIN LANCAMENTO ON PROPRIEDADE.COD_PROPRI = LANCAMENTO.COD_PROPRI_LANC INNER JOIN SUB_GRUPO ON LANCAMENTO.NOME_SUB_GRUPO_LANC = SUB_GRUPO.NOME_SUB_GRUPO INNER JOIN GRUPO ON SUB_GRUPO.NOME_GRUPO_SUB_GRUPO = GRUPO.NOME_GRUPO INNER JOIN TIPO ON GRUPO.NOME_TIPO_GRUPO = TIPO.NOME_TIPO WHERE GRUPO.NOME_GRUPO LIKE '%' + @grupo + '%' CASE WHEN @data IS NOT NULL THEN AND LANCAMENTO.DATA_LANC >= @data END
  14. cristianff

    Select sum com registro duplicado

    Pessoal, tudo bem? Meu primeiro post com uma dúvida que pode ser trivial para maioria mas que eu emperrei aqui, eu procuro pesquisar muito antes de postar mas essa precisarei de um help. Estou montando um select para me trazer o fechamento dos resultados com data base, pra isso eu preciso por exemplo tomar como base 31/12/2015, na estrutura do bd as tabelas que serão consultadas serão docum e docum_pgto, a tabela docum contem os documentos gerados e a docum_pgto registra eventos de pagamentos (1 ou mais) para cada documento. Acontece que quando um docum tem mais de um pagamento na tabela docum_pgto, o registros estão sendo duplicados, o resultado do valor do saldo que eu estou apurando está correto pois ele puxa o valor do pagamento, mas para eu totalizar o valor bruto, tenho esses eventos duplicados que distorcem o resultado. select s1.cod_empresa, s1.num_docum, s1.ies_tip_docum, s1.dat_emis, s1.dat_vencto_s_desc, s1.dat_pgto, s1.cod_cliente, s1.nom_cliente, s1.num_cgc_cpf, s1.cod_portador, s1.ies_pgto_docum, s1.val_bruto, s1.val_liquido, case when sum(val_pago) is null then 0 else sum(val_pago) end val_pago, s1.val_saldo, case when (s1.dat_pgto>='01/01/2015') then sum(s1.val_pago) + sum(s1.val_saldo) else s1.val_saldo end val_saldo2 from ( select d.cod_empresa, d.num_docum, d.ies_tip_docum, d.dat_emis, d.dat_vencto_s_desc, dp.dat_pgto, d.cod_cliente, c.nom_cliente, c.num_cgc_cpf, d.cod_portador, d.ies_pgto_docum, d.val_bruto, d.val_liquido, dp.val_pago, d.val_saldo from docum d left join clientes c on (c.cod_cliente=d.cod_cliente) left join docum_pgto dp on (dp.cod_empresa=d.cod_empresa) and (dp.num_docum=d.num_docum) where d.ies_tip_docum='NC' and d.dat_emis<='31/12/2014' and d.ies_situa_docum<>'C' and d.val_saldo>0 and d.cod_empresa=01 union select d.cod_empresa, d.num_docum, d.ies_tip_docum, d.dat_emis, d.dat_vencto_s_desc, dp.dat_pgto, d.cod_cliente, c.nom_cliente, c.num_cgc_cpf, d.cod_portador, d.ies_pgto_docum, d.val_bruto, d.val_liquido, dp.val_pago, d.val_saldo from docum d left join clientes c on (c.cod_cliente=d.cod_cliente) left join docum_pgto dp on (dp.cod_empresa=d.cod_empresa) and (dp.num_docum=d.num_docum) where d.ies_tip_docum='NC' and d.dat_emis<='31/12/2014' and d.ies_situa_docum<>'C' and dp.dat_pgto>='01/01/2015' and d.cod_empresa=01 ) s1 group by s1.cod_empresa, s1.num_docum, s1.ies_tip_docum, s1.dat_emis, s1.dat_vencto_s_desc, s1.cod_cliente, s1.nom_cliente, s1.num_cgc_cpf, s1.cod_portador, s1.ies_pgto_docum, s1.val_bruto, s1.val_liquido, s1.val_saldo, s1.dat_pgto o retorno deste comando é o seguinte: 1 10549 NC 24/07/2014 24/07/2014 19/08/2015 959 EMPRESA NOME DA EMPRESA 27 000.000.000/0001-26 903 T 313,74 313,74 278,40 - 278,40 1 10549 NC 24/07/2014 24/07/2014 23/11/2015 959 EMPRESA NOME DA EMPRESA 27 000.000.000/0001-26 903 T 313,74 313,74 35,34 - 35,34 1 10550 NC 24/07/2014 24/07/2014 19/08/2015 959 EMPRESA NOME DA EMPRESA 27 000.000.000/0001-26 903 T 650,90 650,90 163,38 - 163,38 1 10550 NC 24/07/2014 24/07/2014 23/11/2015 959 EMPRESA NOME DA EMPRESA 27 000.000.000/0001-26 903 T 650,90 650,90 487,52 - 487,52 1 10975 NC 03/10/2014 03/10/2014 24/02/2015 332 EMPRESA NOME DA EMPRESA 15 000.000.000/0001-14 903 T 1.350,00 1.350,00 135,00 - 135,00 1 10975 NC 03/10/2014 03/10/2014 20/02/2015 332 EMPRESA NOME DA EMPRESA 49 000.000.000/0001-48 903 T 1.350,00 1.350,00 1.215,00 - 1.215,00 1 11476 NC 08/12/2014 08/12/2014 12/02/2015 29 EMPRESA NOME DA EMPRESA 18 000.000.000/0001-17 903 T 1.200,00 1.200,00 240,00 - 240,00 1 11476 NC 08/12/2014 08/12/2014 29/01/2015 29 EMPRESA NOME DA EMPRESA 18 000.000.000/0001-17 903 T 1.200,00 1.200,00 960,00 - 960,00 Então os registros de documentos 10549, 10550, 10975, 11476 repetem pois tiveram mais de um pagamento, o valor da última coluna que é a soma do saldo está ok pois ele soma o valor do pgto com o valor do saldo, mas a primeira e a segunda coluna que são os valores brutos, eles estão duplicando. Tentei organizar a consulta para ficar de fácil compreensão, fiquei praticamente 10 anos relar a mão em SQL, é complicado, fica enferrujado.. Pode ser um detalhe simples, mas se alguém puder da um help ficaria muito agradecido. Valeu
  15. vitaostm

    Query com case

    Olá pessoal, sou novo em programação e estou fazendo uma aplicação onde possuo a seguinte estrutura: | função | Registro | Nome Completo | | Operador | 156 | Fulano de Tal | A coluna função em meu formulário é digitada manualmente (titulo), a coluna registro é um droplist com todas as numerações vindas de uma tabela mysql, e o nome também vem da mesma tabela em uma textbox. 1. A droplist está funcionando, no entanto gostaria de usar um "case" ou de repetente outra função para ele listar somente os registros cuja coluna "função" da mesma tabela mostre "operador", como o exemplo que citei acima. 2. Ao selecionar o registro que ele desse um "load update" e carregasse o respectivo nome. Bom sei que é possível com AJAX, mas vamos por parte e resolvamos a questão 1. O que tenho é o seguinte: <?php header('Content-type: text/html; charset=utf-8'); $pdo = new PDO('mysql:host=localhost;dbname=banco', 'usuario', 'senha'); $sql = "SELECT registro FROM cadastro order by registro ASC"; $stmt = $pdo->prepare($sql); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($stmt->rowCount() > 0) { ?> <select name="CMG"> <?php header('Content-type: text/html; charset=utf-8'); foreach ($results as $row) { ?> <option value="<?php header('Content-type: text/html; charset=utf-8'); echo $row['registro']; ?>"><?php echo $row['registro']; ?></option> <?php } ?> </select> <?php } ?> Desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.