numero - pivot sql
¿Cómo devuelvo las filas con un valor específico primero? (3)
En SQL Server, Oracle, DB2 y muchos otros sistemas de bases de datos, esto es lo que puede usar:
ORDER BY CASE WHEN city = ''New York'' THEN 1 ELSE 2 END, city
Quiero que mi consulta devuelva las filas de la tabla donde una columna contiene un valor específico primero, y luego devuelve el resto de las filas ordenadas alfabéticamente.
Si tengo una tabla, algo así como este ejemplo:
- 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
Y usando esa tabla, quiero que mi consulta devuelva primero las filas que contienen Nueva York y luego el resto de las filas alfabéticamente por ciudad. ¿Es posible hacerlo con solo una consulta?
Mi respuesta puede ser antigua y no necesaria, pero alguien puede necesitar un enfoque diferente, por lo tanto publicarlo aquí.
Tenía el mismo requisito implementado esto, funcionó para mí.
Select * from Users
ORDER BY
(CASE WHEN city = ''New York'' THEN 0 ELSE 1 END), city
GO
PD
esto es para SQL
Si su dialecto SQL es lo suficientemente inteligente como para tratar las expresiones booleanas como si tuvieran un valor numérico, puede usar:
SELECT *
FROM `Users`
ORDER BY (`city` = ''New York'') DESC, `city`