Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kamidaki

Group By Que Não Agrupa Por Data Mas Usa Data Como Parametro

Recommended Posts

Minha dúvida é que tenho um dado que precisa ser agrupado para soma porém não deve ser considerado a data de entrada do item

por ex:

item data entrada valor

1 01/01/2013 100
1 02/01/2013 200
1 03/03/2013 600

sum() = 1200

só que quero que ele me de esse resultado e quero utilizar a data de entrada com between para pesquisa. Só que quando eu eu agrupo tenho que colocar o campo data no agrupamento e o resultado sai assim

item data entrada valor soma

1 01/01/2013 100 1200
1 02/01/2013 200 1200
1 03/03/2013 600 1200


preciso que aparece assim

item valor

1 1200

necessito da data apenas para filtro e não para aparecer na minha view
alguém sabe uma solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não basta algo como ...

create or replace view as
select item, sum(valor)
where data between to_date('01012013','ddmmyyy') and sysdate 
group by item

??

 

Todavia publica a query, não sei se entendi o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não basta algo como ...

create or replace view as
select item, sum(valor)
where data between to_date('01012013','ddmmyyy') and sysdate 
group by item

??

 

Todavia publica a query, não sei se entendi o problema.

mas meu caso eu precisaria dar um select na data também, porque minha view é para ser utilizada em ferramenta de Report....então o between dou na aplicação e não dentro da própria view... só que se eu colocar a data no select sou obrigado a mandar agrupar no group by....se eu fizer isso vai aparecer vários itens como no exemplo que dei, e na verdade quero que apareça o consolidado do item, será que fazendo uma outra view com os parâmetros iguais , menos a data e relacionando-a a view principal funcionaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

--view

 

create or replace view v_minha_view as 
select item, data , sum(valor) 
group by item, data

 

--no rel faça a seguinte query

 

select item , sum(valor) valor
from v_minha_view
where data between to_date('01012013','ddmmyyy') and sysdate 
group by item

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

--view

 

create or replace view v_minha_view as 
select item, data , sum(valor) 
group by item, data

 

--no rel faça a seguinte query

 

select item , sum(valor) valor
from v_minha_view
where data between to_date('01012013','ddmmyyy') and sysdate 
group by item

 


Mota .... o que quis dizer é que tudo que está no select eu posso colocar como parâmetro no Report

 

por ex "select item, data, mvto from tabela.... os campos data, item e mvto podem ser meus parâmetros

 

para o cliente colocar os dados.... e o between não pode ser fixo....na verdade faço o between na aplicação de Report

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em Crystal Reports o que fazemos aqui é criar uma Stored Procedure(SP) que retornar um Cursor.

 

Ou seja, a SP é apenas um SELECT, faz o papel da tabela/view.

 

A SP aceita parâmetros e permite que o usuário informe seus filtros.

 

Não sei se dá para aplicar a mesma solução aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

EDIT: Agora que notei que ele quer usar para aplicação, pra selecionar as colunas.

 

O que o Motta disse pode funcionar, crie a View com as informações da data e a soma delas.

 

Seria melhor explicar melhor como a aplicação realiza esses reports. Ela seleciona o que ? Coluna ? Where clause?

 

Explica melhor

 

 

 

===============================================================

 

 

Poste a query que fica mais fácil.

 

Mas teoricamente, você não precisa por nenhum clausa WHERE no GROUP BY.

 

Basta retirar a data depois do SELECT e no GROUP BY

 

SELECT item, data, valor
FROM tabela
WHERE data between <bla>
GROUP BY
item, data;

PARA

 

SELECT item,valor
FROM tabela
WHERE data between <bla>
GROUP BY
item;

 

É isso ?

 

Teria que ver a query pra ter noção do que é esse item, é código do item vendido ? ou quantidade vendida naquela data ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

WHERE no GROUP BY

 

ATENTE

 

 

--AS VENDAS INDIVIDUAIS MAIOR QUE 100 DE UM VENDEDOR

 

SELECT VENDEDOR,SUM(VENDAS) VENDAS
FROM VENDAS
WHERE VENDA > 100
GROUP BY VENDEDOR

--AS VENDAS SOMADAS POR VENDEDOR QUE TOTALIZADAS FORAM MAIOR QUE 1000

SELECT VENDEDOR,SUM(VENDAS) VENDAS
FROM VENDAS
GROUP BY VENDEDORHAVING SUM(VENDAS) > 1000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso precisa, exatamente por isso que disse teoricamente, essa mesma query pode ser escrita diferente:

 

SELECT VENDEDOR, VENDAS
FROM
(SELECT VENDEDOR,SUM(VENDAS) VENDAS FROM VENDAS GROUP BY VENDEDOR)
WHERE VENDAS > 1000;

Sem a where clause no group by

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe, dependendo do que quer ser feito, ambas podem ser utilizadas, cada uma com sua vantagem.

 

Apenas mencionei, pois o mesmo disse que tem problemas por causa do GROUP BY e nessa solução utilizando SUB QUERY, você retira do GROUP BY a WHERE CLAUSE

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.