problema com distinct

05/04/2006

olá pessoal, estou com um problema para fazer um select.
eu quero fazer um select que o resultado no grid fique dividido em grupo.

eu fiz o seguinte....

select numpedido, representada, 2 as flag
from pedido
union all
select distinct 0, representada, 1 as flag
from pedido
order by representada, flag

funciona beleza do jeito que eu quero, mas o problema é que tenho de colocar mais 3 campos.
Teria que ficar assim...

select numpedido, valortotal, representada, nome, data, 2 as flag
from pedido
union all
select distinct 0, 0 as valortotal , representada, nome, data, 1 as flag
from pedido
order by representada, flag]

isso da erro, mostra duplicidade por causa do nome e data.
como faço para quando o flag for 1 eu mostra zero no campo nome e data.

estou usando o velho Paradox.

obrigado pela atenção.

Adilson


Pecchiai

Respostas

05/04/2006

Emerson

tente:
select
  numpedido, valortotal, representada, nome, data, 2 as flag
from
  pedido 

union all

select
  distinct 0, 0 as valortotal , representada, null nome, null data, 1 as flag 
from
  pedido 
order by
  representada, flag



Responder Citar

06/04/2006

Pecchiai

Oi Emerson.

Já tentei mas esse erro.

(Invalid use of keyword. Token :null line Number: 4.


Responder Citar

06/04/2006

Emerson

então tente:
select 
  numpedido, valortotal, representada, nome, data, 2 as flag 
from 
  pedido 

union all 

select 
  distinct 0, 0 as valortotal , representada, ´´ nome, ´´ data, 1 as flag 
from 
  pedido 
order by 
  representada, flag



Responder Citar

06/04/2006

Pecchiai

então tente:
select 
  numpedido, valortotal, representada, nome, data, 2 as flag 
from 
  pedido 

union all 

select 
  distinct 0, 0 as valortotal , representada, ´´ nome, ´´ data, 1 as flag 
from 
  pedido 
order by 
  representada, flag


Emerson, obrigado pela atenção, mas tb da erro de sintax, estou colocando esse codigo dentro do SQL do componente Query.

Adilson


Responder Citar

06/04/2006

Pecchiai

Pessoal resolvi o problema criando uma tabela auxiliar em tempo de execução e no final do processamento eu destruo a tabela.
Mas não estou satisfeito, acho que não é uma boa pratica, porque se tiver muitos registros o processamento pode demorar.
Poriso se alguem tiver uma idéia de como fazer o select para esse caso eu agradeço.

o grid ficou mais ou menos assim

---------------------------------------------------
num | data | nome cliente | valor
--------------------------------------------------
representante comercial XX 30,00 <------- soma da venda desse cliente
--------------------------------------------------
001| 05/04/2006 | cliente X | 10,00
002| 06/04/2005 | cliente Y | 20,00
--------------------------------------------------
representante comercial YY 50,00 <------- soma da venda desse cliente
--------------------------------------------------
003 | 06/04/2005 | cliente A | 50,00
--------------------------------------------------


e assim por diante.


Responder Citar