Inquiridor
Ordenação dentro da mesma tabela.

Pergunta
-
Pessoal,
Tenho a seguinte tabela:
cd
Nome
Titular
1
Antônio
2
Bruna
3
Renata
4
Victória
1
5
Emília
1
Estou povoando uma gridview com esse resultado, só que o pessoal quer colocar em ordem de nome e de dependentes, no caso da tabela acima, gostaria de receber o resultado do sql da seguinte maneira:
1 Antônio
Aqui, viria os dependentes do Antônio em Ordem alfabética que são:
5 Emília
4 Victória
Depois o restante, sempre em ordem alfabética.
2 Bruna
3 Renata
Como eu consigo efetuar uma consulta somente me retornando dessa forma?
Agradeço a todos pela atenção.
Todas as Respostas
-
-
Ola bom dia ..
Irei apresentar uma maneira de se fazer .. creio que tenha uma maneira mais facil de realizar a consulta ..
A Tabela que criei para fazer os Testes
Code Snippetcd nome titular
----------- ------------------------------ -----------
1 Antonio NULL
2 Bruna NULL
3 Renata NULL
4 Victoria 1
5 Emilia 1Executei o seguinte select em cima desta tabela ...
Code Snippetselect a.cd, a.nome, a.titular
from (select a.cd as Ordenacao,*
from teste A
where titular is null
union
select a.cd as Ordenacao, b.cd, b.nome, b.titular
from teste A inner join teste B
on a.cd = b.titular) a
Order by a.Ordenacao, a.Nome
-
-
Boas Pessoal!
Antônio, teste o código abaixo, pelo que entendi, vc precisa ordenar sempre por nome (do titular e depois dos dependentes dele) e não por código do titular e depois o nome do dependente.
Utilizei esta estrutura
Code Snippetcreate
table #tb(cd
smallint,nome
varchar(30),titular
smallint);
insert
into #tb values( 1, 'Antônio', null )Go
insert
into #tb values( 2, 'Bruna', null )Go
insert
into #tb values( 3, 'Renata', null )Go
insert
into #tb values( 4, 'Victória', 1 )Go
insert
into #tb values( 5, 'Emília', 1 )Go
Esta é a query sugerida
Code Snippetselect tb.cd,
tb.nome,
tb
.titular,tb
.nome as caminhofrom
#tb tbwhere
tb.titular is nullunion
select
tbf.cd,tbf
.nome,tbf
.titular,tbp
.nome + ';' + tbf.nome as caminhofrom
#tb tbf,#tb tbp
where
tbf.titular = tbp.cdorder
by caminho[Editado]
Para que você entenda o que foi feito:
A primeira query retorna somente os titulares;
A segunda retorna os dependentes e tem o nome do titular concatenado ao nome do dependente;
O order by é pelo caminho, que é o nome do titular + o nome do dependente, desta forma, seus registros serão retornados sempre em ordem alfabética.
[Fim do Editado]
Espero ter ajudado.
Abs.,
Edmilton
-