Pesquisar na Comunidade
Mostrando resultados para as tags ''ORACLE''.
Encontrado 41 registros
-
Bom dia senhores, sou novo no Oracle, antes trabalhava com SQL SERVER, e me deparei com algo que ja estou a horas tentando solucionar mas nao consegui. Nessa Trigger que vou postar, quando mando compilar ela, fala que esta faltando uma virgula, apos o values, mas nao precisa dela e nao acho onde pode ser essa virgula faltante. CREATE OR REPLACE TRIGGER JOBS_CL_INSERE_USUARIO AFTER INSERT OR UPDATE OF EXPORTADA_AVA ON SITE_USUARIOS REFERENCING NEW AS NEW BEGIN INSERT INTO BLACKBEAN.TBL_USERS VALUES (NULL, 'INSERT', NULL, 'db', '0', '0', '0', TO_CHAR(:NEW.CPF), MD5(:NEW.CPF||'port@l'), TO_CHAR(:NEW.CPF), SUBSTRING(:NEW.NOME, 1, INSTR(:NEW.NOME, ' ')-1), SUBSTRING(:NEW.NOME, INSTR(:NEW.NOME, ' ')+1, LEN(:NEW.NOME)), 'email@email.com', NULL, NULL, DATE_TO_UNIX_TS(SYSDATE), NULL, NULL); END; / Se alguem puder me ajudar agradeceria.
-
PRODUTOS com a maior quantidade de PEDIDOS
Priscila1307 postou uma questão Perguntas e respostas rápidas
CREATE TABLE CLIENTE( Idcliente int, nome varchar(60), dtnascimento date, cpf varchar(11), CONSTRAINT pk_cliente PRIMARY KEY (Idcliente) ); CREATE TABLE PEDIDO( Idpedido int, Idcliente int, datapedido date, vltotal decimal(10,2), CONSTRAINT pk_pedido PRIMARY KEY (Idpedido), CONSTRAINT fk_pedido_cliente FOREIGN KEY (Idcliente) REFERENCES CLIENTE(Idcliente) ); CREATE TABLE PRODUTO( Idproduto int, descricao varchar(100), quantidade int, CONSTRAINT pk_produto PRIMARY KEY (Idproduto) ); CREATE TABLE ITEMPEDIDO( Idpedido int, Nritem int, valor decimal(10,2), quantidade int, Idproduto int, CONSTRAINT pk_itempedido PRIMARY KEY (Idpedido, Nritem), CONSTRAINT fk_Idpedido FOREIGN KEY (Idpedido) REFERENCES PEDIDO (Idpedido), CONSTRAINT fk_itempedido_produto FOREIGN KEY (Idproduto) REFERENCES PRODUTO (Idproduto) ); CREATE TABLE LOG( Idlog int, data date, descricao varchar(255), CONSTRAINT pk_log PRIMARY KEY (Idlog) ); INSERT INTO CLIENTE VALUES (1, 'Hugo Batista', TO_DATE('05/02/1990', 'DD/MM/YYYY'), '51898608253'); INSERT INTO CLIENTE VALUES (2, 'José Antonio', TO_DATE('02/05/1985', 'DD/MM/YYYY'), '51144722241'); INSERT INTO CLIENTE VALUES (3, 'João Carlos', TO_DATE('03/05/1993', 'DD/MM/YYYY'), '84882273292'); INSERT INTO CLIENTE VALUES (4, 'Edivaldo Santana', TO_DATE('01/06/2000', 'DD/MM/YYYY'), '30609426176'); INSERT INTO CLIENTE VALUES (5, 'Cristina Oliveira', TO_DATE('16/08/1999', 'DD/MM/YYYY'), '56313586700'); INSERT INTO CLIENTE VALUES (6, 'Artur da Silva', TO_DATE('06/05/2001', 'DD/MM/YYYY'), '67491246583'); INSERT INTO CLIENTE VALUES (7, 'Adrina Domingues', TO_DATE('01/02/1972', 'DD/MM/YYYY'), '22044617250'); INSERT INTO PRODUTO VALUES (1, 'SAMSUNG J7 - PRIME', 10); INSERT INTO PRODUTO VALUES (2, 'SAMSUNG J5 - PRIME', 10); INSERT INTO PRODUTO VALUES (3, 'IPHONE X', 10); INSERT INTO PRODUTO VALUES (4, 'MOTO G 5S', 10); INSERT INTO PRODUTO VALUES (5, 'IPHONE 6S', 10); INSERT INTO PEDIDO VALUES (1, 4, TO_DATE('10/03/2018', 'DD/MM/YYYY'), 1400.99); INSERT INTO ITEMPEDIDO VALUES (1, 1, 800.99, 1, 1); INSERT INTO ITEMPEDIDO VALUES (1, 2, 600.00, 1, 2); INSERT INTO PEDIDO VALUES (2, 2, TO_DATE('17/03/2018', 'DD/MM/YYYY'), 1349.50); INSERT INTO ITEMPEDIDO VALUES (2, 1, 749.50, 1, 4); INSERT INTO ITEMPEDIDO VALUES (2, 2, 600.00, 1, 2); INSERT INTO PEDIDO VALUES (3, 1, TO_DATE('20/03/2018', 'DD/MM/YYYY'), 2590.10); INSERT INTO ITEMPEDIDO VALUES (3, 1, 1800.71, 1, 5); INSERT INTO ITEMPEDIDO VALUES (3, 2, 789.39, 1, 4); INSERT INTO PEDIDO VALUES (4, 5, TO_DATE('21/03/2018', 'DD/MM/YYYY'), 2590.10); INSERT INTO ITEMPEDIDO VALUES (4, 1, 5099.00, 1, 3); INSERT INTO PEDIDO VALUES (5, 7, TO_DATE('10/03/2018', 'DD/MM/YYYY'), 1800.00); INSERT INTO ITEMPEDIDO VALUES (5, 1, 600.00, 3, 2); "Crie um select que exibe quais são os três PRODUTOS com a maior quantidade de PEDIDOS. Exiba o nome e o código do produto" Oi pessoal. por favor preciso da ajuda de vocês . Eu queria criar um SELECT que exiba os três PRODUTOS com a maior quantidade de PEDIDOS. Retornando nome do produto ( PRODUTO.DESCRICAO ) e o código dele ( PRODUTO.IDPRODUTO ) Eu tentei das seguintes formas mas não consegui . estou novinha ainda em oracle SELECT PRODUTO.DESCRICAO, PRODUTO.IDPRODUTO, ITEMPEDIDO.QUANTIDADE FROM ITEMPEDIDO, PEDIDO, PRODUTO WHERE ITEMPEDIDO.IDPEDIDO = PEDIDO.IDPEDIDO AND PRODUTO.IDPRODUTO = ITEMPEDIDO.IDPRODUTO GROUP BY IDPRODUTO neste código só roda sem erro se eu tirar o GROUP BY IDPRODUTO. Mas não gera o resultado esperado SELECT ITEMPEDIDO.IDPRODUTO, COUNT(*) AS VENDIDO FROM ITEMPEDIDO GROUP BY IDPRODUTO ORDER BY VENDIDO DESC Aqui eu até consegui chegar perto mas não consegui acrescentar o nome do produto ( que é PRODUTO.DESCRICAO) e o produto com idproduto 2 ( que é o J5 ) não são só 3 vendidos. SÃO 5 !!! ai ai ai ai ....e apos muita batalha eu consegui fazer isso ... que tbm ainda não é o ideal SELECT * FROM (SELECT ITEMPEDIDO.IDPRODUTO, COUNT(*) AS VENDIDO FROM ITEMPEDIDO GROUP BY IDPRODUTO ORDER BY VENDIDO DESC) WHERE ROWNUM <4 ... demorei horrores pra fazer esse WHERE ROWNUM <4 rodar sem erro... pois é pessoal. só historia triste ! kkkkk Agora estou tentando esse aqui mas não terminei SELECT PRODUTO.DESCRICAO AS NOME, ITEMPEDIDO.IDPRODUTO FROM PRODUTO, ITEMPEDIDO WHERE PRODUTO.IDPRODUTO = ITEMPEDIDO.IDPRODUTO acabei parando no meio do caminho e decidi recorrer ao imasters ! vou continuar tentando ... sera que consigo antes de alguem aparecer aqui ? rsrsrs obrigada ! boa sorte pessoal. ah ! já ia esquecendo estou usando o livesql.oracle.com e vou deixar aqui tbm a consulta das tabelas- 6 respostas
-
- banco de dados
- oracle
- (e mais 1 )
-
[RESOLVIDO] Problemas com pesquisa por período no Oracle e php7.3
asacap1000 postou um tópico no fórum Oracle
Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3. Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL) FROM IN_OUT IO WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021' 1 04/11/2021 2 18/11/2021 3 17/11/2021 4 14/11/2021 5 22/11/2021 6 08/11/2021 7 11/11/2021 8 13/11/2021 9 09/11/2021 10 10/11/2021 11 05/11/2021 12 19/11/2021 13 15/11/2021 14 03/11/2021 15 06/11/2021 16 23/11/2021 17 01/11/2021 18 02/11/2021 19 16/11/2021 20 20/11/2021 21 12/11/2021 22 21/11/2021 Se eu utilizar ele ignora a data que estabeleci para a consulta TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021' 1 03/07/2013 2 05/07/2013 3 18/06/2013 4 21/05/2013 5 20/05/2013 6 12/08/2013 7 21/08/2013 8 23/08/2013 9 02/09/2013 10 12/09/2013 Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas. O que dá pra fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo Agradeço qualquer ajuda que vier -
Boa tarde, Atualmente qual a melhor formar de fazer um conexao C# com o banco Oracle ? desde já agradeço
-
select A.CODPROD,A.DESCRICAO,A.DTMOVLOG DATA,A.NUMNOTA,ROUND(A.QT,2)QTDE,A.PUNIT,A.NOMECODOPER OPERACAO,ROUND(A.P_TOTAL,2)P_TOTAL, (SELECT QTEST - PCEST.QTRESERV QTEST FROM PCEST WHERE CODFILIAL = 1 AND CODPROD = A.CODPROD)QTESTOQUE FROM( SELECT PCMOV.CODPROD,PCMOV.DESCRICAO, TRUNC(PCMOV.DTMOV) DTMOV, PCMOV.DTMOVLOG, PCMOV.NUMNOTA, PCMOV.NUMSEQ, PCMOV.NUMSEQPED, PCMOV.NUMTRANSENT, PCMOV.DTCANCEL, DECODE(DTCANCEL,NULL,'','Cancelado') SITUACAO, PCMOV.CODUSUR, PCMOV.NUMTRANSVENDA, PCMOV.NUMCAR, PCMOV.NUMLOTE, PCMOV.CODFISCAL, NVL(PCMOV.CUSTOREAL,0) CUSTOREAL, NVL(PCMOV.CUSTOFIN,0) CUSTOFIN, (CASE WHEN (SUBSTR(PCMOV.CODOPER,1,1) = 'E') THEN NVL(PCMOV.CUSTOFIN,0) ELSE NVL(PCMOV.CUSTOFINEST,0) END) CUSTOFINEST, NVL(PCMOV.CUSTOULTENT,0) CUSTOULTENT, NVL(PCMOV.CUSTOFORNEC,0) CUSTOFORNEC, NVL(PCMOV.CUSTOCONT,0) CUSTOCONT, DECODE(PCMOV.CODOPER, 'E',PCMOV.CODFORNEC, 'EB',PCMOV.CODFORNEC, 'ET',PCMOV.CODFORNEC, 'ER',PCMOV.CODFORNEC, 'ES',PCMOV.CODFORNEC, PCMOV.CODCLI) CODCLI, NVL(PCMOV.CODFUNCLANC,0) AS CODFUNCLANC, DECODE(SUBSTR(PCMOV.CODOPER, 1, 1), 'S',(PCMOV.QT * (-1)), 'R',(PCMOV.QT * (-1)), DECODE(NVL(PCMOVCOMPLE.QTRETORNOTV13, 0), 0, NVL(PCMOV.QT, 0), PCMOVCOMPLE.QTRETORNOTV13)) AS QT, NVL(PCMOV.PUNIT,0) PUNIT, PCMOV.CODOPER, DECODE(PCMOV.CODOPER, 'E', DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Cancelada','Entrada Merc.'), 'EB',DECODE(GREATEST(PCMOV.QT,0),0,'Bonif. Cancelada','Entrada Bonific.'), 'ET',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Transf. Cancelada','Entrada Transf.'), 'EA',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Ajuste Cancelada','Ajuste Estoque'), 'E1',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Avaria Cancelada','Entrada Avaria'), 'EI',DECODE(GREATEST(PCMOV.QT,0),0,'Ajuste Invent. Cancelado','Ajuste Invent.'), 'ED',DECODE(GREATEST(PCMOV.QT,0),0,'Devolução Cancelada','Dev. Cliente'), 'EN',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Venda Consig. Cancelada','Dev. Venda Consignada'), 'ER',DECODE(GREATEST(PCMOV.QT,0),0,'Simples Remessa Cancelada','Simples Remessa'), 'ES',DECODE(GREATEST(PCMOV.QT,0),0,'Sobra Mercadoria Cancelamento','Sobra de Mercadoria'), 'EM',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Mat. Consumo Cancelada','Entrada Materiais de Consumo'), 'EC',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Consig. Cancelada','Entrada Consignação'), 'EO',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Comodato Cancelada','Devolução de Comodato'), 'EX',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Avulsa Cancelada','Devolução Avulsa'), 'EG',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Benefic. Cancelada','Entrada de Beneficiamento'), 'S', DECODE(GREATEST(PCMOV.QT,0),0,'NF Cancelada','Saida'), 'SD',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Cancelada','Dev. Fornecedor'), 'SB',DECODE(GREATEST(PCMOV.QT,0),0,'Saida Bonific. Cancelada','Saida Bonific.'), 'ST',DECODE(GREATEST(PCMOV.QT,0),0,'Saida Transf. Cancelada','Saida Transf.'), 'S1',DECODE(GREATEST(PCMOV.QT,0),0,'Avaria Reaprov. Cancelada','Avaria por Reaproveitamento'), 'SS',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Sobra Cancelada','Saída de Sobra'), 'SA',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Ajuste Cancelada','Ajuste Estoque'), 'SI',DECODE(GREATEST(PCMOV.QT,0),0,'Ajuste Invent. Cancelado','Ajuste Invent.'), 'SR',DECODE(GREATEST(PCMOV.QT,0),0,'Simples Remessa Cancelada','Simples Remessa'), 'SC',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Consig. Cancelada','Saída Consignação'), 'SO',DECODE(GREATEST(PCMOV.QT,0),0,'Remessa Comodato Cancelada','Remessa de Comodato'), 'SF',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Comodato Fornec. Cancelada','Devolução de Comodato a Fornecedor'), 'RA',DECODE(GREATEST(PCMOV.QT,0),0,'Req. Avulsa Cancelada','Requisição Avulsa'), 'EP',DECODE(GREATEST(PCMOV.QT,0),0,'Cancelamento Produção','Entrada Produção'), 'SP',DECODE(GREATEST(PCMOV.QT,0),0,'Cancelamento Produção','Requisição Mat.Prima'), 'SV',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Avaria Cancelada','Saída por Avaria'), 'SM',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Mat. Consumo Cancelada','Saída Materiais de Consumo'), 'SL',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Perda Cancelada','Saída de Perda'), 'EL',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Perda Cancelada','Entrada de Perda'), 'EF',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Comodato Cancelada','Entrada de Comodato'), 'SN',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Benefic. Cancelada','Saída de Beneficiamento'), 'EV',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Dev. Rem. Benefic. Cancelada','Entrada Devolução de Remessa para Beneficiamento'), 'EG',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Benefic. Cancelada','Entrada de Beneficiamento'), 'Desconhecido') NOMECODOPER, (NVL(PCMOV.PUNIT,0)*DECODE(NVL(PCMOVCOMPLE.QTRETORNOTV13, 0), 0, NVL(PCMOV.QT, 0), PCMOVCOMPLE.QTRETORNOTV13)) P_TOTAL, (CASE WHEN PCMOV.CODOPER IN ('SA', 'EA') THEN (SELECT DISTINCT HISTORICO FROM PCLANC WHERE NUMTRANSENT = PCMOV.NUMTRANSENT AND ROWNUM = 1) ELSE ' ' END) MOTIVO FROM PCMOV, PCPRODUT, PCMOVCOMPLE WHERE PCMOV.CODPROD IN(SELECT CODPROD FROM PCPRODUT WHERE CODSEC IN(10020)) AND PCMOV.CODPROD = PCPRODUT.CODPROD AND PCMOV.NUMTRANSITEM = PCMOVCOMPLE.NUMTRANSITEM(+) AND NVL(PCMOVCOMPLE.MOVEST, 'S') = 'S' AND PCMOV.DTMOV BETWEEN '01-JAN-2020' AND '29-SEP-2021' AND NVL(PCMOV.CODFILIALNF, PCMOV.CODFILIAL) = '1' AND PCMOV.CODOPER <> 'S' AND ((NVL(PCPRODUT.ESTOQUEPORLOTE, 'N') = 'S' AND PCMOV.NUMLOTE IS NOT NULL) OR (NVL(PCPRODUT.ESTOQUEPORLOTE, 'N') = 'N' AND PCMOV.NUMLOTE IS NULL)) AND PCMOV.STATUS IN ('B','AB') AND NOT EXISTS (SELECT DISTINCT (PCNFSAID.NUMTRANSVENDA) FROM PCNFSAID, PCPRODUT WHERE PCNFSAID.NUMTRANSVENDA = PCMOV.NUMTRANSVENDA AND PCNFSAID.CODFILIAL = PCMOV.CODFILIAL AND PCMOV.CODOPER = 'S' AND PCNFSAID.CONDVENDA IN (4, 7, 14) AND PCMOV.CODPROD = PCPRODUT.CODPROD AND PCPRODUT.TIPOMERC = 'CB') AND NOT (FERRAMENTAS.F_BUSCARPARAMETRO_ALFA('DEVOLVESIMPLESREMTV13TOTAL',PCMOV.CODFILIAL,'N') = 'S' AND PCMOV.ROTINACAD LIKE '%1332%' AND NVL(PCMOVCOMPLE.QTRETORNOTV13,0) = 0) AND NOT EXISTS (SELECT NUMNOTA FROM PCNFSAID WHERE NUMTRANSVENDA = PCMOV.NUMTRANSVENDA AND SITUACAONFE IN (110,205,301,302,303)) ORDER BY PCMOV.CODOPER, PCMOV.DTMOV, PCMOV.NUMNOTA )A WHERE A.DTCANCEL IS NULL AND A.CODOPER = 'E' ORDER BY CODPROd,DATA Boa tarde. Estou com essa dúvida: Preciso em um select trazer os dados com a seguinte condição: Quando o valor do punit repetir, somente traz o ultimo registro. ou seja a maior data. caso contrário, traz todos os registros. é possíveç, mais não sei como. Tentei usar o ROW_NUMBER(). Mas não encontrei uma forma de usar. Greato
-
Boa tarde, Pessoal estou com uma dificuldade no MYSQL, estou querendo obter dados de um cadastro caso ele tenha preenchido todos os Campos, tentei usar o Group by mas não tive sucesso. Minha tabela e a seguinte: Nome. Pedido. Status Daniel. 9955. Ok Daniel. 9954 Ok Rafael. 9940 Ok Rafael. 9941. Aberto Rafael. 9942. Ok Rodrigo. 9961. Ok Rodrigo. 9962. Ok Meu objetivo e puxar os nomes que estão com todos o pedidos relacionado em ok, no caso o Rafael não pode aparece pois ele tem um pedido Aberto, porém não conseguir fazer isso, pessoal peco a ajuda de VCS muito o obrigado. tentei isso aqui: SELECT nome, pedido, status FROM `cadastros` GROUP BY pedido, nome ORDER BY having status = 'Ok'
-
Boa noite, Pessoal estou com uma dificuldade no MYSQL, estou querendo obter dados de um cadastro caso ele tenha preenchido todos os Campos, tentei usar o Group by mas não tive sucesso. Minha tabela e a seguinte: Nome. Pedido. Status Daniel. 9955. Ok Daniel. 9954 Ok Rafael. 9940 Ok Rafael. 9941. Aberto Rafael. 9942. Ok Rodrigo. 9961. Ok Rodrigo. 9962. Ok Meu objetivo e puxar os nomes que estão com todos o pedidos relacionado em ok, no caso o Rafael não pode aparece pois ele tem um pedido Aberto, porém não conseguir fazer isso, pessoal peco a ajuda de VCS muito o obrigado. tentei isso aqui: SELECT nome, pedido, status FROM `cadastros` GROUP BY pedido, nome having status = 'Ok'
-
Boa Tarde, a todos Estou fazendo um relatório que traz em uma pagina web um relatório para ser impresso, mas estou tendo um problema de desempenho para trazer os dados para a pagina web. Tenho uma consulta onde traz todos os ID dos funcionários e salvo cada um deste resultado em um Array. E com esses IDs salvo em um array eu faço um loop e dentro faço um select filtrando cada ID de funcionário onde neste select traz as informações de cada um dos funcionário, mas estou com problema nesse select dentro do loop, pois demora quase 2 min para finalizar todas as consultas e trazer as informações na pagina são mais de 130 consulta que faz. Pensei em alguns modos de salvar os os todos dados em array com a penas um select mas não consigo filtra por ID. $selRE = "SELECT * FROM(SELECT DISTINCT RE, NOME FROM ENG_REL_EPIS WHERE to_date(DATA,'DD/MM/YY') BETWEEN to_date('$dataIni','DD-MM-YY') AND to_date('$dataFim','DD-MM-YY') ) ORDER BY NOME ASC "; $parse2 = oci_parse($conn,$selRE); oci_execute($parse2); while($fetch2=oci_fetch_assoc($parse2)) { $re2[] = $fetch2['RE']; } $cnt = count($re2); $i = 0; while($i < $cnt ){ $select = "SELECT DISTINCT CA,PRODUTO,DESCRICAO,DATA,RE,NOME,QTD FROM ENG_REL_EPIS WHERE to_date(DATA,'DD/MM/YY') BETWEEN to_date('$dataIni','DD-MM-YY') AND to_date('$dataFim','DD-MM-YY') AND RE ='$re2[$i]' ORDER BY DATA ASC"; // echo $select."<br>"; $parse=oci_parse($conn,$select); oci_execute($parse); $fetch=oci_fetch_array($parse); echo " <div class='tamanho'> <br> <!-- ============== BEGIN CABEÇALHO ==================--> <div class='row borda'> <div class='col-sm-4'> <img src='./../../img/logo_p.png' alt='some text' class='logo'> </div> <div class='col-sm borda_esquerda titulo2'> Ficha de Registro de Entrega de Equipamentos de Proteção Individual </div> </div> <br> <div class='row borda titulo'> <div class='col'> PERÍODO: $dataIni a $dataFim </div> </div> <br> <div class='row borda_esquerda_direita_top titulo'> <div class='col'> PRODUTOS </div> </div> <div class='row titulo'> <div class='col-2 borda_top_esquerda'> Data </div> <div class='col-2 borda_top_esquerda'> Código </div> <div class='col-1 borda_top_esquerda'> Qtd </div> <div class='col-1 borda_top_esquerda'> CA </div> <div class='col borda_esquerda_direita_top'> Descrição </div> </div> "; do{ $DATA = date('d/m/Y', strtotime($fetch["DATA"])); $PRODUTO = $fetch["PRODUTO"]; $QTD = $fetch["QTD"]; $CA = $fetch["CA"]; $DESCRICAO = mb_strimwidth($fetch["DESCRICAO"], 0, 48, "..."); $RE = $fetch["RE"]; $NOME = $fetch["NOME"]; echo " <div class='row conteudo'> <div class='col-2 borda_top_esquerda'> $DATA </div> <div class='col-2 borda_top_esquerda'> $PRODUTO </div> <div class='col-1 borda_top_esquerda'> $QTD </div> <div class='col-1 borda_top_esquerda'> $CA </div> <div class='col borda_esquerda_direita_top'> $DESCRICAO </div> </div> "; }while($fetch=oci_fetch_array($parse)); echo " <div class='row borda_top'> </div> <div class='row borda_esquerda_direita_top'> <div class='texto'> Eu $NOME, R.E. $RE. De acordo com as normas regulamentadoras (N.R.) 1.7 e 6.1, declaro e confirmo que recebi da Engemet Metalurgia e Comercio Ltda os Equipamentos de Proteção Individual necessários à minha função, discriminados e assinados por mim, abaixo. Afirmo ainda ter ciência da obrigatoriedade do bom uso e conservação destes, bem como a instrução devida para o uso correto. </div> <br> </div> <div class='row '> <div class='col borda_esquerda_direita_baixo'> <div class='titulo'> $data <br> <br> </div> </div> </div> <div class='row'> <div class='col'> <div class='titulo'> <br><br><br> Assinatura:_____________________________________________________________ </div> </div> </div> </div> <p style='page-break-before:always'></p> "; $i++; oci_free_statement($parse); }
-
Bom dia pessoal. Estou com uma dúvida na estruturação do select. Tenho um relatório que está extraindo já informações corretamente, com base no período gerado (inicial e final) Exemplo de como está hoje: SELECT D.CATEGORIA, SUM(D.VALOR) AS VALOR_VENDA, D.DATA AS (MES_ANO) FROM DUAL D WHERE D.DATA BETWEEN '20210501' AND '20210731' GROUP BY D.CATEGORIA, D.DATA Retornando: Categoria | Valor_venda | Mes_Ano 1 | 1000,00 | 05/2021 1 | 2000,00 | 06/2021 1 | 800,00 | 07/2021 2 | 500,00 | 05/2021 2 | 200,00 | 07/2021 2 | 700,00 | 06/2021 Até ai está tranquilo. Porém foi solicitado para adicionar uma coluna YTD (Year to data - acumulado do ano) agrupando o valor total da venda do ano do filtro. Então se foi colocado uma data do período Jan/2020 a Mar/2020, essa nova coluna tem que pegar as vendas do ano inteiro de 2020 E precisa me retornar assim: Categoria | Valor_venda | Mes_Ano | YTD 1 | 1000,00 | 05/2021 | 15000,00 1 | 2000,00 | 06/2021 | 15000,00 1 | 800,00 | 07/2021 | 15000,00 2 | 500,00 | 05/2021 | 8000,00 2 | 200,00 | 07/2021 | 8000,00 2 | 700,00 | 06/2021 | 8000,00 (Os valores de 15000 e 8000 seria a soma do ano inteiro) O que consegui pensar seria um subselect que tem o where com data do ano, porém nesse caso retorno mais de um resultado no subselect, não dando para usar... Qual seria a alternativa que tenho?
-
[Resolvido] Duvidas com Select de 2 tabelas diferentes
marco tulio sousa postou um tópico no fórum Oracle
Boa tarde, FIz a declaração abaixo e tinha expectativa que o relatório retornado tivesse datas de inicio e termino de afastamento e ferias. Afastamentos estão em 1 tabela e férias em outra. Erro ORA-000936 Que devo fazer? SELECT SUBSTR(RHCGED_ALT_SIT_FUN.CODIGO, -6) Matric, RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL, CASE WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1216' THEN 'ATESTADO' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1211' THEN 'INSS' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1220' THEN 'INSS' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1218' THEN 'MATERNID' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1118' THEN 'MATERNIDADE' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1318' THEN 'PATERNIDADE' WHEN RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL = '1210' THEN 'LIC REMUN' END TIPO_AFAST, TO_DATE(RHCGED_ALT_SIT_FUN.DATA_INIC_SITUACAO) DT_INIC_AFAST, TO_DATE(RHCGED_ALT_SIT_FUN.DATA_FIM_SITUACAO) DT_FIM_AFAST, TO_DATE(RHFERI_FERIAS.DT_INI_GOZO) DT_INIC_FERIAS, TO_DATE(RHFERI_FERIAS.DT_FIM_GOZO) DT_FIM_FERIAS FROM CRHH.RHCGED_ALT_SIT_FUN INNER JOIN CRHH.RHFERI_FERIAS ON RHCGED_ALT_SIT_FUN.CODIGO = RHFERI_FERIAS.CODIGO_CONTRATO WHERE RHCGED_ALT_SIT_FUN.COD_SIT_FUNCIONAL In ('1216','1211','1220','1218','1118','1318','1210') AND CRHH.RHCGED_ALT_SIT_FUN.CODIGO >=lpad(:texto_1,15,'0') AND RHCGED_ALT_SIT_FUN.CODIGO <=lpad(:texto_2,15,'0') ORDER BY RHCGED_ALT_SIT_FUN.DATA_INIC_SITUACAO DESC -
Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam? Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE. Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer.
-
Envio de https via Oracle Versão Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production PL/SQL Release 12.2.0.1.0 - Production "CORE 12.2.0.1.0 Production" TNS for Linux: Version 12.2.0.1.0 - Production NLSRTL Version 12.2.0.1.0 - Production Obs 1) Wallet Instalado Obs 2) O problema não seria reproduzível por questões de segurança Obs 3) Já tentei com o fornecedor Tento enviar um POST via PLSQL e recebo o seguinte erro : Erro : ORA-24263: Certificate of the remote server does not match the target address. Pergunta Como posso saber o valor de req := utl_http.begin_request(url, 'POST',https_host =>'???????'); ? é obrigatório ? create or replace PROCEDURE "SMS_ENVIO2" (PNUMSMS IN VARCHAR2 , PTEXTO IN VARCHAR2 , PRETORNO OUT VARCHAR2) /*alguns dados ocultos*/ AS req utl_http.req; res utl_http.resp; url varchar2(4000) := 'https://messaging.o2c.cloud/api/v2/sms/';--acho que posso citar o site name varchar2(4000); buffer varchar2(4000); content varchar2(4000); VS_USUARIO VARCHAR2(11) := '*****'; VS_SENHA VARCHAR2(20) := '*****'; VS_SERIAL VARCHAR2(8);--VARCHAR2(100); VS_SCHEDULLE VARCHAR2(16) := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI'); VS_AUTHOR_64 VARCHAR2(20) := '*********'; begin UTL_HTTP.SET_WALLET('file:.....', '**********'); -- VS_SERIAL := LPAD(SMSENVIO_SERIAL_SEQ.NEXTVAL,8,'0'); content := ' { ' || ' "sendSmsRequest": {' || ' "to": "' || PNUMSMS ||'",' || ' "message": "' || PTEXTO || '",' || ' "id": "' || VS_SERIAL || ' }' || ' } '; -- dbms_output.put_line(url); dbms_output.put_line(content); -- --req := utl_http.begin_request(url,'POST'); req := utl_http.begin_request(url, 'POST',https_host =>'???????'); utl_http.set_header(req, 'Content-Type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.set_header(req, 'Authorization', 'Basic ' || utl_encode.base64_encode(VS_AUTHOR_64)); -- utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end; dbms_output.put_line('retorno ' || buffer); exception when others then PRETORNO := 'Erro : ' || UTL_HTTP.GET_DETAILED_SQLERRM; end;
-
Boa tarde pessoal. Estou travado em uma parte do select do qual preciso somar os valores de todos os registros da coluna, e usa-lo como base de calculo para outra coluna SELECT PRODUTO, HORAS, QTDE, VARIACAO FROM DUAL Meu select está retornando algo assim: PRODUTO | HORAS | QTDE | VARIACAO A | 2 | 20 | 5 B | 6 | 25 | 3 C | 5 | 70 | 9 D | 8 | 30 | 2 -------------------------------------------------------- Total | 21 | 145 | Preciso criar uma nova coluna com a formula (Total Qtde / Total horas) * variação ficando assim: PRODUTO | HORAS | QTDE | VARIACAO | CONTA A | 2 | 20 | 5 | 34.52 B | 6 | 25 | 3 | 20.71 C | 5 | 70 | 9 | 62.14 D | 8 | 30 | 2 | 13.80 A forma que estou tentando fazer é via subselect, mas ele não agrupa todas as linhas, e somente o registro da linha atual. SELECT PRODUTO, HORAS, QTDE, VARIACAO, (SELECT (SUM(QTDE) / SUM(HORAS)) * VARIACAO) AS CONTA FROM DUAL Dessa forma me retorna o seguinte resultado, como se estive calculando somente a linha atual e não toda a coluna. PRODUTO | HORAS | QTDE | VARIACAO | CONTA A | 2 | 20 | 5 | 50 B | 6 | 25 | 3 | 12.5 C | 5 | 70 | 9 | 126 D | 8 | 30 | 2 | 7.5 Espero que eu tenha conseguido explicar minha necessidade de forma que de para entender.
- 4 respostas
-
Salve galera estou com uma consulta, e preciso buscar a diferença entre datas, e em alguns casos são vários dias. Preciso que nesta consulta ele me retorne em dias, horas limitando a 23h minutos e segundos.. A consulta que fiz foi essa: abs(trunc((AK1.DATA_FINAL - AK1.DATA_INICIAL))) AS dias, abs(trunc(24 * (AK1.DATA_FINAL - AK1.DATA_INICIAL))) AS horas, abs(trunc((MOD(MOD(AK1.DATA_FINAL - AK1.DATA_INICIAL, 1) * 24, 1) * 60))) AS minutos, abs(trunc((MOD((MOD(MOD(AK1.DATA_FINAL - AK1.DATA_INICIAL, 1) * 24, 1) * 60), 1) * 60))) AS segundos, ou essa aqui LPAD(TRUNC(( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400 / 3600)), 3, '0') ||':' || LPAD(TRUNC(MOD( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400 , 3600 ) / 60 ), 2, '0') || ':'|| LPAD(TRUNC(MOD(MOD( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400, 3600 ), 60)), 2, '0') calculado, e nessa duas consultas ele me traz o total de horas o que complica. DIAS HORAS MINUTOS SEGUNDOS CALCULADO 0 6 1 10 006:01:11 0 0 31 28 000:31:28 0 1 5 8 001:05:09 0 0 41 2 000:41:02 0 4 59 53 004:59:53 0 0 41 6 000:41:06 0 4 59 20 004:59:20 0 0 56 1 000:56:01 0 0 26 31 000:26:31 0 6 10 3 006:10:03 0 0 40 1 000:40:01 0 4 59 53 004:59:53 0 6 3 27 006:03:27 0 6 3 7 006:03:07 0 1 5 57 001:05:58 10 250 28 21 250:28:21 10 250 18 37 250:18:37 0 4 58 42 004:58:43 Alguem poderia me dar uma força
-
Beleza? seguinte, tivemos problema com o servidor que pegou fogo, foi recuperado, porém não estou conseguindo compilar uma view se eu executo: select * from v_view , funciona se eu executo a query da view, também funciona select 1 campo from dual Porém, quando tento recompilar a view, dá erro create or replace view v_view as select 1 campo from dual No caso, minha query tem várias tabelas, estava dando esse erro numa tabela, consegui solucionar com o comando grant select on owner1.tabela to owner2 with grant option; Mas para a segunda tabela, esse comando não funcionou. executei o revoke e depois novamente o grant e também não foi REVOKE all ON owner1.tabela FROM owner2; Isso é em ambiente de homologação e percebi que o campo grantable está YES e em produção está setado para NO com o comando abaixo e em produção está funcionando, consigo compilar a view select * from user_tab_privs where table_name = 'tabela' Alguém tem idéia do que pode ser? o que é que está pegando? Obrigado
-
Boa tarde !estou carregando um arquivo texto numa variável BLOB e preciso manipular em loop, para ler linha a linha e aplicar os SUBSTRs para inserir no banco, mas não sei como fazer o loop, a interação entre as linhas e quando saber o momento de sair do loop, alguém pode me ajudar?ex do conteúdo do BLOB: 2AAA02012021123421 2AAA02012021213453 2AAA02012021105413 quero por exemplo retirar a informação da linha 2 a partir do quarto caracter e parando no decimo segundo caracteres
-
Oracle is moving its headquarters from Silicon Valley to Austin, Texas
-
Boa tarde galera. Fiz um select que tras 4 informações do banco (matricula, nome, data e hora) SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ORDER BY QD1_DTBAIX, QD1_HRBAIX Retornando os seguintes registros: Preciso retornar somente as linhas em amarelo, que seria a seguinte condição. Caso tiver alguma matricula igual, trazer somente o registro com a maior data, junto com seu respectivo horário. O mais próximo que consegui chegar foi utilizando o MAX para data e hora, e agrupando o restante dos campos. SELECT QD1_MAT,RA_NOME,MAX(DATA), MAX(QD1_HRBAIX) FROM ( SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ) GROUP BY QD1_MAT,RA_NOME Porém na hora ele não pega o valor correspondente e sim o valor máximo. Ai estou travado nessa parte, como faço para trazer a hora corresponde sem o restante dos registros?
-
Boa tarde. Estou com o seguinte problema: Preciso retornar um selct da seguinte maneira: exemplo que não funciona: select codusur,numnota,codcli,cliente,vltotal,numtransvenda,dev,decode(vlvenda),if(vlvenda > 100 then 1 else 2) from( select tb1.codusur,tb1.numnota,tb1.codcli,tb1.cliente,tb1.vltotal,tb1.numtransvenda,DECODE(tb2.VLTOTAL,NULL,0,tb2.VLTOTAL)DEV from( select codusur,numnota,pcnfsaid.codcli,pcnfsaid.cliente,pcnfsaid.vltotal,pcnfsaid.numtransvenda from pcnfsaid where pcnfsaid.dtsaida > '01-OCT-2020' and pcnfsaid.dtcancel is null )tb1 left outer join (select DISTINCT VLTOTAL,VW_INTEGRA_DEVOLUCAO_TOTAL.NUMTRANSVENDA from VW_INTEGRA_DEVOLUCAO_TOTAL )tb2 on tb1.NUMTRANSVENDA = tb2.NUMTRANSVENDA order by numnota ) Como pode reparar, eu usei um if/else já que não sei a forma correta de usar. Pois com DECODE não consegui usar uma forma de fazer a comparação. Pois preciso mesmo retornar uns valores fixos. Ex: Se o valor > 40000, retorna um valor x; Se for maior que 5000 retorna um valor y. Aguardo a ajuda dos amigos. Grato
-
boa tarde. Estou precisando de um Select que retorne uma soma que ao chegar a determinado valor ela reinicie e continue fazendo sucessivamente select pedido, volume, limite, SUM(volume) over (order by pedido ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) saldo from pedidos group by pedido o select está retornando assim porém quero que toda vez que chegue ou passe do limite resete o saldo, por exemplo parar no 100 que é o limite e começar um novo saldo pedido volume limite saldo 1 70 100 70 2 10 100 80 3 20 100 100 4 50 100 150 5 30 100 180 preciso que ele soma o volume enquanto o saldo seja <= que o "limite", quando passar pare de somar e comece outra soma começando do 0, como no exemplo abaixo. pedido volume limite saldo 1 70 100 70 2 10 100 80 3 20 100 100 4 50 100 50 5 30 100 80
- 4 respostas
-
- oracle
- analytic functions
- (e mais 4 )
-
Boa noite, comecei a pouco a trabalhar com banco oracle, e vem acontecendo uma coisa muito estranha, pelo menos uma vez por semana o banco para, da erro de no listener, nas maquinas e preciso reiniciar o servidor (windows server 2016). olhando no alert não encontro nada, pela falta de experiencia, que possa parecer pertinente ao problema.
-
Prezados, desenvolvi um gatilho onde este tem comunicação com outra tabela, uma é a coleta_sinal_vital, e onde o gatilho foi criado é na table itcoleta_sinal_vital ( esta possui uma fk da primeira), a questão é que dentro do gatilho realizo um select na primeira tabela para consultar o valor inserido em uma coluna da primeira tabela, faço essa consulta baseada nessa fk que esta sendo inserida ou seja where = :new.cd_coleta_sinal_vital, a questão é que no momento em que esse select é executado ele não retorna dado nenhum, acredito que isto ocorre porque a inserção em ambas as tabelas é feito de forma simultânea, pois se comparado posteriormente o valor da coluna sempre é inserido, gostaria de saber se existe alguma forma de aplicar uma espera ou atraso neste gatilho para que ele possa capturar este valor sem problemas, grato!
-
Olá pessoal, Estou com um probleminha, eu tenho uma sequence criado num owner (owner_a), executei o comando para criar em outro owner(owner_b): grant all on sequence_a to owner_b e consegui usar, só que no dia seguinte esse grant sumiu e deu erro: ora-00942: tabela ou view não existe. No owner_a funciona corretamente. voltei a executar o comando de grant de funcionou de boa mas de ontem para hoje ocorreu novamente E acontece só para essa sequence, as outras do banco, não têm problema, funcionam normalmente Eu até pensei em dar um drop e criar de novo mas fico com receio que possa ter algum impacto no sistema que é daqueles que ninguém gosta de mexer, "tá funcionando, não mexe" E acontence nos dois ambiente, homologação e produção. Obrigado
-
buenas no sistema eu tenho uma tabela A com um campo que é do tipo NUMBER um outro sistema, tem uma tabela B que se relaciona com esse campo da tabela A, é que é do tipo NUMBER(19,2) Se relacionam corretamente mas não foi possível criar a constraint de FK não estou pensando em alter table pois pode gerar um caos no sistema verificar por trigger se já existe? obrigado