SQL, Alguém pode ajudar-me ?

13/02/2003

0

O resultado de minha consulta SQL está assim:

Vendedor Produto Quant
________________________________________________________
VENDEDOR FULANO DE TAL | ENXAGUANTE SENDAS 300 ML | 4333
VENDEDOR FULANO DE TAL | ENXAGUANTE SENDAS 300 ML | -670


Gostaria que ficasse assim:

Vendedor Produto Quant
_____________________________________________________________
VENDEDOR FULANO DE TAL | ENXAGUANTE SENDAS 300 ML | 4333 | -670


Abaixo segue minha SQL.

Select C.Nome,B.Nome,SUM(A.Quant)
From Pedidos, Itens A,Produtos B, Vendedor C, Mem_OPe D
Where Num_Ped=A.Num_Ped AND A.Cod_Prod=B.Cod_Prod AND
Cod_Ven=C.Cod_Ven And DT_Emi >= ´07/01/02´ AND DT_Emi <= ´10/31/02´
And D.Venda LIKE ´¬´+Tipo+´¬´ And D.Devol NOT LIKE ´¬´+Tipo+´¬´
Group By C.Nome,B.Nome
Union
Select C.Nome,B.Nome,SUM(A.Quant*(-1))
From Pedidos, Itens A,Produtos B, Vendedor C, Mem_OPe D
Where Num_Ped=A.Num_Ped AND A.Cod_Prod=B.Cod_Prod AND
Cod_Ven=C.Cod_Ven And DT_Emi >= ´07/01/02´ AND DT_Emi <= ´10/31/02´
And D.Devol LIKE ´¬´+Tipo+´¬´
Group By C.Nome,B.Nome


O que devo mudar para que fique com o lay-out da 2º opção

Desde já agradeço.

Marcos.[size=18:30e959528a][/size:30e959528a]


M_gab

M_gab

Responder

Posts

13/02/2003

Fernando

vc so acrescenta um order by e a coluna que vc que ordenar
SUM(A.Quant) ou A.Quant, uma das duas ira funcionar


Responder

13/02/2003

Flavio Sanches

Select C.Nome,B.Nome,SUM(A.Quant) as Quant1,
(Select SUM(A.Quant*(-1))
From Pedidos, Itens A,Produtos B, Vendedor C, Mem_OPe D
Where Num_Ped=A.Num_Ped AND A.Cod_Prod=B.Cod_Prod AND
Cod_Ven=C.Cod_Ven And DT_Emi >= ´07/01/02´ AND DT_Emi <= ´10/31/02´
And D.Devol LIKE ´¬´+Tipo+´¬´ ) as Quant2
From Pedidos, Itens A,Produtos B, Vendedor C, Mem_OPe D
Where Num_Ped=A.Num_Ped AND A.Cod_Prod=B.Cod_Prod AND
Cod_Ven=C.Cod_Ven And DT_Emi >= ´07/01/02´ AND DT_Emi <= ´10/31/02´
And D.Venda LIKE ´¬´+Tipo+´¬´ And D.Devol NOT LIKE ´¬´+Tipo+´¬´
Group By C.Nome,B.Nome

---------------------------------------------------------------------------------
Ou seja: uma subquery no lugar do field.
Repare que eu não mexi no resto do código, eu somente copiei o segundo select pra dentro do primeiro e atribui o nome quant2 pro result. Vale vc dar uma enxugada no bagulho por que eu acho que está meio grande além da conta, mas só vc é capaz de fazer isso porque conhece a base que vc trabalha e a importância de cada argumento.

dá uma olhada depois me fala

bom trabalho


Responder

13/02/2003

Anonymous

Antes de tentar dar uma solução, gostaria de saber pra quê selecionar a tabela Mem_Ope (D) se ela não é relacionada com nenhuma outra em nenhum momento. Acho que o resultado retornado na query é - pelo menos - suspeito (pra não dizer que eu acho que deve estar errado).


Responder

13/02/2003

Navoid

bom creio que o emerson tenha razão, pois a consulta irá retornar o número de registros que existirem na tabela mem_oper,
mas mesmo assim, corrija a situação e use a última resposta, uma subquery no lugar do campo), isso resolvi, só que vc tem que ter certeza que a query só retorna um campo e um registro.

até


Responder

14/02/2003

M_gab

A tabela Mem_Ope contém um campo chamado Venda que esta relacionado ao Campo Tipo da Tabela de Pedidos.
O Problema que o programador Clipper que montou a tabela fez o seguinte; concatenou todos os códigos de vendas dentro do mesmo campo ex:
Código de Venda 01, 02 ,03 ,04 ele colocou assim ´01020304´ e quando precisa comparar faz desta maneira:
IF Tipo $ Venda
// se o conteúdo de tipo estiver contido dentro de venda
// esse Pedido e Venda

Se possivel for gostaria da sua ajuda.
Desde já agradeço.

Marcos.







Antes de tentar dar uma solução, gostaria de saber pra quê selecionar a tabela Mem_Ope (D) se ela não é relacionada com nenhuma outra em nenhum momento. Acho que o resultado retornado na query é - pelo menos - suspeito (pra não dizer que eu acho que deve estar errado).



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar