ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Extrair mes e o ano
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sex Fev 02, 2007 11:47 am    Assunto: Extrair mes e o ano Responder com Citação

tem como extrair o mes e o ano uzando o sql no Interbase 6.0?

quando eu uso o extract no IbConsole do InterBase não reconhece este comando, estranho porque eu tenho um livro "Borland/Inprise - Interbase 6.0" e neste livros ensina a usar este comando, mas quando eu uso aqui não reconhece este comando.


IB6 + delphi7

flw.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Sex Fev 02, 2007 5:57 pm    Assunto: Responder com Citação

Olá, para interbase vc pode utilizar:

select extract(day from data) as dia, extract(month from data) as mes, extract(year from data) as ano from <sutatabela>;

Deve ser o mesmo parametro que o livro ensina. Para tanto, verifique se o dialeto do seu DB está 3.

Abraço.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sáb Fev 03, 2007 4:31 pm    Assunto: Responder com Citação

data seria o campo da tabela? de uma olhada no erro quando o Select é executo no banco:

Código:
ERRO:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 7, char 8
extract
Statement: SELECT extract(month from V.dt_inc) as Mes,
                  extract(year from V.dt_inc) as Ano,
                  SUM(I.totItem) as Total_Mes
           FROM venda V, item_venda I
           WHERE extract(year from V.dt_inc) = 2007
           AND V.id_venda = I.id_venda
           GROUP BY extract(month from V.dt_inc), extract(year from V.dt_inc)


estou querendo montar um relatório de mostre o total de venda de produtos no mês.

agradeço pela ajuda,
Pestana.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Seg Fev 05, 2007 9:25 am    Assunto: Responder com Citação

Sim, data é um campo. Rolling Eyes

O erro está ocorrendo, porque você está tentando agrupar por uma expressão. Tente:

Código:

SELECT extract(month from V.dt_inc) as Mes,
                  extract(year from V.dt_inc) as Ano,
                  SUM(I.totItem) as Total_Mes
           FROM venda V, item_venda I
           WHERE extract(year from V.dt_inc) = 2007
           AND V.id_venda = I.id_venda
           GROUP BY 1,2;


qqr coisa mandai..

Flw.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Fev 05, 2007 11:41 am    Assunto: Responder com Citação

é isso ai brother, deu certo, mais uma vez valeu pela ajuda!

o que fiz para resolver foi agrupar pelo o campo data do pedido

Código:
GROUP BY V.dt_inc



flw.
Valeu.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Ter Fev 06, 2007 3:27 pm    Assunto: Responder com Citação

blz.. se ajudou a resolver tranquilo... Rolling Eyes

flw.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Dom Fev 11, 2007 12:32 pm    Assunto: Responder com Citação

gustavocco marcai bobeira eu pensava que resolvi o problema, mas na real não. quando o select é executado o resultado é apresentado na seguinte forma:

Mes | Ano | Total_Mes
2 | 2007 | 60,20
2 | 2007 | 1,50

o resultado teria que ser agrupado pelo mes e o ano e somando o total de vendas no mês eu estavá agrupando pela data, mas a data envolve 'dd/mm/aaaa' então destá forma da errado.

Mes | Ano | Total_Mes
2 | 2007 | 61,70

a query detalhe já está pronta, ela informa a descrição do produto a quantidade de produtos vendidos naquele mes e o total faturado.

como posso resolver isso? ou você tem uma outra ideia de montar o relatorio de vendas de produtos por mês.


agradeço pela ajuda,
Pestana.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Seg Fev 12, 2007 12:42 am    Assunto: Responder com Citação

Amigo, você já tentou fazer como o Gostabo falou? :

Código:
SELECT extract(month from V.dt_inc) as Mes,
                  extract(year from V.dt_inc) as Ano,
                  SUM(I.totItem) as Total_Mes
           FROM venda V, item_venda I
           WHERE extract(year from V.dt_inc) = 2007
           AND V.id_venda = I.id_venda
           GROUP BY 1,2


Se sim, e não funcionou, tente criar uma view, e fazer o agrupamento no select da view.
_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Fev 12, 2007 9:54 am    Assunto: Responder com Citação

Ola thomazs, sim eu já tentei fazer destá maneira, mas da erro na linha group by não reconhece o numero 1.

pelo o que eu sei isso só da certo no firebird, vou tentar usar view.


valeu
Pestana.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Seg Fev 12, 2007 11:35 am    Assunto: Responder com Citação

Olá, não sei se com interbase 6 funciona mesmo. Mas se ocorre erro de sql no numero 1 entao provavelmente a sintaxe do banco não o permite.
Vc poderia fazer uma view como sugerido pelo thomazs, e num select com group by pela view... funciona legal... qqr coisa posta posta ai novamente.

Flw.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Fev 12, 2007 2:45 pm    Assunto: Responder com Citação

É a primeira vez que estou tentando trabalhar com View, já li várias apostilas, mas está dando erro, devo estar fazendo alguma coisa de errado. não está reconhendo o numero 1:

SQL error code = -104
Token unknown - line 8, char 10
1

Código:
 CREATE VIEW Total_Mes
AS
  SELECT extract(month from dt_inc)as Mes, extract(year from dt_inc) as Ano, SUM(totItem) as Total_Mes
  FROM venda V, item_venda I
  WHERE extract(year from dt_inc) = 2007
  AND V.id_venda = I.id_venda
  GROUP BY 1, 2;


está correta está view?
como eu passo parametro para View? está linha contém parametro WHERE extract(year from dt_inc) = :ano


flw.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Seg Fev 12, 2007 6:37 pm    Assunto: Responder com Citação

Para criar a view:

Código:

CREATE VIEW Vi_Total_Mes ( Mes, Ano, TotItem )
AS
SELECT
    extract(month from dt_inc),
    extract(year from dt_inc),
    totItem
FROM venda V, item_venda I
  WHERE V.id_venda = I.id_venda ;



Para dar o select após a view ter sido criada:

Código:

select mes, ano, Sum(TotItem)
from Vi_Total_Mes where ano = 2007
group by mes, ano

_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Ter Fev 13, 2007 2:48 pm    Assunto: Responder com Citação

valeu ajuda de todos, deu certo funcionou belezinha, agora não querendo abusar de sua vontade como é conceito da execução? em que momento do select chama a view? acredito que primeiro é executado o select depois em algum momento o select chama a view para ser executado, é isso, ou estou falando besteira?

eu já estou a um bom tempo procurando na web a respeito disso, mas há muitas informações vagas, não ficou bem claro pra mim.

está explicação será de muita importância pra mim, para que eu consigua entender como é a interação do select com a view.


agradeço,
flw.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Ter Fev 13, 2007 2:59 pm    Assunto: Responder com Citação

Ao avaliar de onde são pegos os dados (no caso da view) é enviado um comando para processamento desses dados e criação das tuplas (linhas). A view então é avaliada, ou seja, o select é disparado, e gerado um tipo de "tabela" em memória. Utilizando-se dessa "tabela", são coletadas as informações das colunas predefinidas pelo select, e os agrupamentos, etc.

Ou seja, primeiro processa-se a view, depois monta-se os dados do select.
_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Ter Fev 13, 2007 5:11 pm    Assunto: Responder com Citação

thomazs escreveu:
Ao avaliar de onde são pegos os dados (no caso da view) é enviado um comando para processamento desses dados e criação das tuplas (linhas). A view então é avaliada, ou seja, o select é disparado, e gerado um tipo de "tabela" em memória. Utilizando-se dessa "tabela", são coletadas as informações das colunas predefinidas pelo select, e os agrupamentos, etc.

Ou seja, primeiro processa-se a view, depois monta-se os dados do select.


quero ver se eu entendi: ao executar o select,
Código:
select mes, ano, Sum(TotItem)
from Vi_Total_Mes where ano = 2007
group by mes, ano

primeiro se avalia de onde vem os dados, no caso seria a view 'Vi_Total_Mes',
Código:
CREATE VIEW Vi_Total_Mes ( Mes, Ano, TotItem )
AS
SELECT
    extract(month from dt_inc),
    extract(year from dt_inc),
    totItem
FROM venda V, item_venda I
  WHERE V.id_venda = I.id_venda ;

A view cria uma tabela virtual contendo os campos Mes, Ano e TotItem, atraves do select dentro da view prepara-se a criação das tuplas utilizando as tabelas fisica, depois ao terminar, o select continua com sua avaliação nestá tabela virtual recem criada 'Vi_Total_Mes' 'where ano = 2007 ....'. (o campo ano seria da tabela Vi_Total_Mes).

então é por isso que você cosegue fazer o agrupamento 'group by mes, ano', neste caso não está agrupando por expressão mas sim pelo o valor dos campos mes e ano da tabela virtual, e isso né?

então chego a uma conclusão que views constroi tabelas virtuais e o select avalia os dados desta tabela virtual (neste exemplo).


flw.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB