Ir para conteúdo

POWERED BY:

Arquivado

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

SergioC

Select dividido em dois grupos

Recommended Posts

Boa noite a todos.

 

Tenho uma tabela com os seguintes registros:

 

---------------------------

| ID | Nome | Idade |

---------------------------

| 1 | João | 25 |

| 2 | Paulo | NULL |

| 4 | Maria | NULL |

| 7 | Pedro | 18 |

| 8 | Carlos | 15 |

| 9 | Ana | 12 |

--------------------------

 

O caso é que eu quero que o Select retorne a tabela inteira com as seguintes regras:

Primeiro os registros que o campo Idade forem NOT NULL com o campo Nome em ordem alfabética;

Depois os registros que o campo Idade forem NULL com o campo Nome em ordem alfabética;

 

Tentei o seguinte código e não funcionou:

------------------------------------------------------------------------------------------------

(SELECT ID, Nome, Idade
FROM tabela
WHERE Idade IS NOT NULL ORDER BY Nome)
UNION
(SELECT ID, Nome, Idade
FROM tabela
WHERE Idade IS NULL ORDER BY Nome);
------------------------------------------------------------------------------------------------
Retorna os NOT NULL primeiro, mas não em ordem alfabética
O resultado esperado é este:

---------------------------

| ID | Nome | Idade |

---------------------------

| 9 | Ana | 12 |

| 8 | Carlos | 15 |

| 1 | João | 25 |

| 7 | Pedro | 18 |

| 4 | Maria | NULL |

| 2 | Paulo | NULL |

--------------------------

 

Espero ter explicado corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

 

Order by (case when idade is not null then 0 else 1 end),nome

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT ID, Nome, Idade

FROM tabela

Order by (case when idade is not null then 0 else 1 end),nome

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.