 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sex Fev 02, 2007 11:47 am Assunto: Extrair mes e o ano |
|
|
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 |
|
 |
gustavocco Administrador

Registrado: Sexta-Feira, 6 de Fevereiro de 2004 Mensagens: 4253 Localização: Chapecó - SC
|
Enviada: Sex Fev 02, 2007 5:57 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sáb Fev 03, 2007 4:31 pm Assunto: |
|
|
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 |
|
 |
gustavocco Administrador

Registrado: Sexta-Feira, 6 de Fevereiro de 2004 Mensagens: 4253 Localização: Chapecó - SC
|
Enviada: Seg Fev 05, 2007 9:25 am Assunto: |
|
|
Sim, data é um campo.
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Fev 05, 2007 11:41 am Assunto: |
|
|
é 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 |
|
 |
gustavocco Administrador

Registrado: Sexta-Feira, 6 de Fevereiro de 2004 Mensagens: 4253 Localização: Chapecó - SC
|
|
Voltar ao Topo |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Dom Fev 11, 2007 12:32 pm Assunto: |
|
|
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 |
|
 |
thomazs Moderador


Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Seg Fev 12, 2007 12:42 am Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Fev 12, 2007 9:54 am Assunto: |
|
|
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 |
|
 |
gustavocco Administrador

Registrado: Sexta-Feira, 6 de Fevereiro de 2004 Mensagens: 4253 Localização: Chapecó - SC
|
Enviada: Seg Fev 12, 2007 11:35 am Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Fev 12, 2007 2:45 pm Assunto: |
|
|
É 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 |
|
 |
thomazs Moderador


Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Seg Fev 12, 2007 6:37 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Ter Fev 13, 2007 2:48 pm Assunto: |
|
|
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 |
|
 |
thomazs Moderador


Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Ter Fev 13, 2007 2:59 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Ter Fev 13, 2007 5:11 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|