sql - transformar - unpivot oracle




Como faço para retornar linhas com um valor específico primeiro? (2)

Eu quero minha consulta para retornar as linhas da tabela onde uma coluna contém um valor específico primeiro e, em seguida, retornar o restante das linhas em ordem alfabética.

Se eu tenho uma tabela algo parecido com este exemplo:

 - Table: Users
 - id - name -  city
 - 1    George  Seattle
 - 2    Sam     Miami
 - 3    John    New York
 - 4    Amy     New York
 - 5    Eric    Chicago
 - 6    Nick    New York

E usando essa tabela, quero que minha consulta retorne as linhas que contêm New York primeiro e, em seguida, o resto das linhas em ordem alfabética por cidade. Isso é possível fazer usando apenas uma consulta?


Minha resposta pode ser antiga e não necessária, mas alguém pode precisar de uma abordagem diferente e, portanto, postá-la aqui.

Eu tinha o mesmo requisito implementado isso, funcionou para mim.

Select * from Users
ORDER BY
(CASE WHEN city = 'New York' THEN 0 ELSE 1 END), city
GO

PS

isto é para SQL


No SQL Server, Oracle, DB2 e muitos outros sistemas de banco de dados, isso é o que você pode usar:

ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city




sql-order-by