Fórum Select com distinct e agrupamento no final #53288
11/10/2005
0
tenho uma tabela de produtos:
campo, numfabricante.
Valores:
520
521AM
521AZ
521VE
522AM
52390
52390AM
52390PR
524BR
524VE
525AM
526AM
527AM
528PR
...
...
preciso dar um select, retornando somente a parte dos numero e distinct.
ja fiz com um STOREPROCEDURE.
ele retorna
520
521
522
52390
524
525
526
527
528
baseado neste retorno,
agora preciso de um select que:
me lista este retorno + todos os valores que estes pertenciam, exemplo:
campo1, campo2
520
521 AM, AZ, VE
522 AM
52390 AM, PR
524 BR, VE
525 AM
526 AM
527 AM
528 PR
como fazer ?
Pedih
Curtir tópico
+ 0Posts
11/10/2005
Afarias
T+
Gostei + 0
11/10/2005
Pedih
mas este FOR SELECT, que voce sugeriu.
ele vai retornar varias linhas.
e preciso q retorne somente uma linha.
nao compreendi.
veja minha storeprocedure para selecionar os registros distincts
create procedure pradolux (Marca
Char(10))
returns (Numfabricantenovo Varchar(20))
as
declare variable n Smallint;
declare variable i Smallint;
declare variable NumFabricante Varchar(20);
declare variable Tamanho Integer;
declare variable C Char(1);
declare variable NumFabricanteAgrupados Varchar(20);
begin
For Select
p.Numfabricante
From Produtos p
Where
p.Codmarca = :Marca
Into :Numfabricante Do
Begin
n = Rs_length(:Numfabricante);
i = 1;
Numfabricantenovo = ´´ ;
while (:I <= :n) do
Begin
C = Rs_substring(:Numfabricante, I, 1);
If (C >= ´0´ And C <= ´9´) Then
Numfabricantenovo = :Numfabricantenovo || :c;
I = :I + 1;
End
Tamanho = n;
Suspend;
end
/* Procedure Text */
end
uso assim:
Select Distinct NumFabricanteNovo pradolux(´324´);
ele retorna a lista dos numeros dos fabricantes
somente a parte dos numeros:
e distincts:
mas, desse resultado, quero que, em cada registro saia todos as informacoes refrente ao mesmo item no qual foi agrupado.
exemplo:
Antes doprocedimento:
520AM
520AZ
520BP
RETORNA:
CAMPO1----CAMPO2
520----------AM, AZ, BP.
entendeu?
Gostei + 0
11/10/2005
Afarias
|e preciso q retorne somente uma linha.
não necessáriamente. o for SELECT pode retornar 1 ou N linhas para cada ítem do FOR, vc q decide, vc pode facilmente fazer algo como:
(obs: este exemplo usa um outro procedimento)
create procedure Teste1 (marca varchar(10)) returns (NumFabNovo Varchar(10), Codigos Varchar(20)) as declare variable NumFab varchar(20); begin for select distinct NumFabricanteNovo pradolux(´324´) into :NumFabNovo do begin Codigos = ´´; for select NumFabricante from produtos where NumFabricante starting :NumFabNovo // ?? outra função ?? into :NumFab do Codigos = Codigos || ´ ´ || Substring(NumFab,?,?); Suspend; end end^
T+
Gostei + 0
11/10/2005
Pedih
valeu: funcionou perfeitamente.
Obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)