Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!

2008-05-13 Por tôpico Luis Eduardo Trovo
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 !!!!

2008-05-13 Por tôpico Luis Eduardo Trovo
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 !!!!

2008-05-13 Por tôpico Luis Eduardo Trovo
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 ===