Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo? Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DTSOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL -- Execução -- SQL SQL ACCEPT p_dia CHAR PROMPT 'Digite o dia da data (de 01 a 31): ' Digite o dia da data (de 01 a 31): 12 SQL SQL ACCEPT p_mes CHAR PROMPT 'Digite o mês da data (de 01 a 12): ' Digite o mês da data (de 01 a 12): 05 SQL SQL ACCEPT p_ano CHAR PROMPT 'Digite o ano (com 4 dígitos): ' Digite o ano (com 4 dígitos): 2008 SQL SQL SELECT soma_dia p_mes/p_ano 2 FROM vw_teste 3 WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/'); antigo 1: SELECT soma_dia p_mes/p_ano novo 1: SELECT soma_dia 05/2008 antigo 3: WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/') novo 3: WHERE dt = TO_DATE('12/05/2008','dd/mm/') 05/2008 -- 1500 SQL SQL -- Finalização --- SQL UNDEFINE p_dia SQL UNDEFINE p_mes SQL UNDEFINE p_ano __ Em 13/05/08, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu: Marcelo, A View vai ser chamada por um select no Sql Plus. O select da View tem um campo chamado data, onde vou informar o dia/mes/ano. Após executar o select na view, o retorno de determinada coluna tem que ter o apelido desta data, porém no formato mes/ano. Grato. Luís --- Marcelo [EMAIL PROTECTED] marcelo%40autopratense.com.br wrote: Luis, Ainda assim, você não respondeu de onde parte a execução da instrução SQL que cria a view, se é de uma aplicação Java/Delphi/.Net ou SqlPlus/Procedure/trigger. Desculpa ser insistente com esta pergunta, mas como você mencionou que você irá sempre atualizar a mesma view, sendo a partir de uma aplicação basta passar o comando SQL já formatado: CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE 05/2008 FROM DUAL Ou então criar uma procedure. create or replace procedure create_view(mes_ano char) is begin execute immediate('CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE ' || mes_ano || ' FROM DUAL'); end ; Atenciosamente, Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED]marcelo%40autopratense.com.br [EMAIL PROTECTED] marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br
Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
André/Gleyson, Concordo com cada palavras que disseram e agradeço todo o tempo que estão dando aos meus e-mails! Insisto em dizer que o problema é técnico! Meu diretor não é daqueles usuários exóticos como disse o Gleyson, ou um diretor financeiro (que não tem muita base em TI) como disse o André. Meu usuário é diretor de TI! É um cara muito, mas muito bom no que faz e manja bastante de conceitos e técnicas, tanto que ele é o diretor aqui da empresa nesta área. O que ele necessita é apenas que o apelido de uma coluna seja flexível. Tivemos ai os colegas, inclusive o André sugerindo uma solução, que passou muito perto do que preciso se em nossa tabela em questão tivesse a data dividada em dia, mês e ano, porém ainda não é isso, pois eu preciso passar a data completa e utilizar apenas um pedaço desta como apelido para uma coluna. Bom, creio que não é possível uma solução para este problema do jeito que está disposto. Terei a humildade de falar com meu diretor e lhe mostrar que o que ele quer acaba sendo impossível diante do contexto. Senhores, muito obrigado pela força! Abraços. Luís. --- Andre Santos [EMAIL PROTECTED] wrote: Luis A solução que mandei não resolve? Mas, na realidade, concordo com o Gleyson. Isso me fez lembrar de uma vez em que um gerente financeiro queria umas alterações num sistema e eu era desenvolvedor/vítima dele. ;^) Pedia umas coisas meio sem sentido... eu tentava fazer, aí ele via, depois, que não fazia sentido mesmo (mas não admitia) e mudava os requisitos constantemente... isso foi uma novela! Diante da demora (e do nada que se apresentava) o diretor financeiro me chamou para uma conversinha. Assumi minha responsabilidade, mas também expliquei que não faziam sentido as coisas que estavam sendo pedidas e que, por isso, estava difícil de definir o sistema. Conclusão (sábias palavras do velho diretor mestre Yoda): André, entendo que o gerente financeiro está equivocado. Mas você, como analista, tinha a responsabilidade de mostrar isso a ele.. Ou seja, eu estava tentando atender o cliente a qualquer custo, mas (após a orientação do diretor) percebi que, às vezes, não é possível (ou viável) atender e o melhor é explicar isso... (é praticamente uma obrigação nossa, como técnicos). :^) [ ] André Em 13/05/08, Gleyson Melo [EMAIL PROTECTED] escreveu: Cara, Se eu fosse você, diria o mesmo que eu te disse no outro email. O que ele quer não faz muito sentido do ponto de vista de informática e provavelmente não tem uma solução. Uma vez, um usuário queria de todo jeito que eu colocasse em uma página web um link que abrisse uma aplicação do Lotus Notes. O pessoal do Notes disse que não era possível. O cara queria de qualquer maneira porque disseram pra ele que tudo é possível na informática, o que não é uma verdade viável. Pergunta pra ele o verdadeiro problema que ele quer resolver. Talvez ele precise mudar o código-fonte do sqlplus, ou fazer o próprio sqlplus dele. Talvez você ganhe mais créditos com ele dando uma solução melhor. Ah, também lembro de um gerente não-técnico que fazia mil perguntas e reclamava pra mim dos arquivos temporários gerados pelo MS Office... e eu era responsável apenas pelo desenvolvimento do software da empresa, hehehe. Cuidado com essas figuras exóticas. 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.comgleysonmelo% 40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você
Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Mais uma vez obrigado Guilherme! Era exatamente alguma técnica assim que eu precisava. E obrigado a todos que colaboraram! Grato. Luís --- Gmail - Guilherme [EMAIL PROTECTED] wrote: eheheh Cara eu sei como é isso.. cara espero que o codigo abaixo te ajude set serveroutput on; DECLARE TYPE DatCurTyp IS REF CURSOR; dat_cv DatCurTyp; lix_rec LIXO%ROWTYPE; sql_stmt VARCHAR2(2000); v_datdate := to_date('01/05/2008','dd/mm/'); BEGIN sql_stmt := 'SELECT 500 valor,sysdate FROM dual WHERE sysdate = :d'; OPEN dat_cv FOR sql_stmt USING v_dat; LOOP FETCH dat_cv INTO lix_rec; EXIT WHEN dat_cv%NOTFOUND; DBMS_OUTPUT.PUT_LINE(to_char(v_dat,'mm/')||chr(10)|| lix_rec.valor ); END LOOP; CLOSE dat_cv; END; / 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] andre.psantos.ti%40gmail.com andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) === message truncated ===