Si tengo código por ejemplo

SELECT DISTINCT 
    table1.column2, table2.column3, table2.column4 
FROM 
    table1
JOIN
    table2 ON table1.column = table2.column
WHERE 
    table1.column1 IN ('Value1', 'Value2')

Esto devolverá dos filas de los mismos datos, excepto que cada una tendrá un valor diferente para una columna específica. ¿Cómo puedo traer el único valor y solo hacer que resulte en una columna?

Por ejemplo, actualmente resultaría en algo como esto:

column1       column2        column3
Value1        Value2         Value3
Value1        Value2         Value5

Básicamente crea dos filas porque en la columna 3, los valores son diferentes, ¿hay alguna manera de que pueda traer ese valor 5 y hacer una columna separada para él en la primera fila?

¿Esto implicaría pivotar o cómo podría hacerlo?

¡Gracias por cualquier ayuda!

0
bingaloman 24 ene. 2018 a las 05:35

3 respuestas

La mejor respuesta

Como la columna 3 solo tiene un valor de 2, MIN () y MAX () le proporcionarán tanto el valor

SELECT table1.column1, table2.column2, MIN(table2.column3) , MAX(table2.column3)
FROM   table1
JOIN   table2 
ON     table1.column = table2.column
WHERE  table1.column1 IN ('Value1', 'Value2')
GROUP BY table1.column2, table2.column3
1
Squirrel 24 ene. 2018 a las 04:00

Puede agregar la columna según lo que desee. podría ser: MAX, MIN, SUM, AVG, etc.

SELECT  table1.column1, table1.column2, MAX(table2.column3) AS column3
FROM    table1
        INNER JOIN table2 
            ON table1.column = table2.column
WHERE   table1.column1 IN ('Value1', 'Value2')
GROUP   BY table1.column1, table1.column2
1
John Woo 24 ene. 2018 a las 02:38

LAG() podría obtener la fila justo antes de la fila actual. Entonces el guión es algo como esto:

    select * from(
     SELECT DISTINCT table1.column2, table2.column3, table2.column4,lag(column4) over (order by table1.column2,table2.column3,table2.column4) l
     FROM table1
     JOIN
     table2 on 
     table1.column = table2.column
     WHERE table1.column1 IN ('Value1', 'Value2')
   )t where t.l is not null
1
Sunil 24 ene. 2018 a las 04:13