es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambie la consulta para devolver una salida categorizada.

Tengo una consulta como esta:

select * from my_table;

y el resultado es como sigue:

name       x1    x2    x3
----       ---- ---   ---
data       -2    3      -1

Quiero cambiar la consulta para dividir la salida positiva y negativa en filas separadas y el resultado cambia a:

name       x1    x2    x3
----       ---- ---   ---
data       -2    3      -1
data       -2    null   -1
data       null  3      null
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada, se puede usar el operador UNION en SQL para combinar los resultados de múltiples declaraciones SELECT. Aquí hay una consulta de ejemplo que separará valores positivos y negativos:

    SELECT name, 
           CASE WHEN x1 < 0 THEN x1 ELSE NULL END as x1, 
           CASE WHEN x2 < 0 THEN x2 ELSE NULL END as x2,
           CASE WHEN x3 < 0 THEN x3 ELSE NULL END as x3
    FROM my_table
    WHERE x1 < 0 OR x2 < 0 OR x3 < 0
    
    UNION ALL
    
    SELECT name, 
           CASE WHEN x1 >= 0 THEN x1 ELSE NULL END as x1,
           CASE WHEN x2 >= 0 THEN x2 ELSE NULL END as x2,
           CASE WHEN x3 >= 0 THEN x3 ELSE NULL END as x3
    FROM my_table
    WHERE x1 >= 0 OR x2 >= 0 OR x3 >= 0;
    

    Esto devolverá tres filas para cada fila original de datos, con valores nulos en las columnas donde el valor no es positivo o negativo. La primera declaración SELECT selecciona filas donde al menos una columna es negativa, y la segunda declaración SELECT selecciona filas donde al menos una columna es no negativa (es decir, positiva o cero). El operador UNION ALL combina los resultados de las dos declaraciones SELECT en un único conjunto de resultados.

Comments are closed.