it-swarm.com.de

Zwei Zeilen mit Nullwerten werden ohne Nullwerte zu einer Zeile zusammengeführt

Ich habe den Datensatz wie folgt aus der Tabelle abgerufen:

Name                 Opp                     Bid                  Pro
----------------------------------------------------------------------
Admin                 2                      NULL                 NULL
Pragnya Sonal         7                      NULL                 NULL
Priyanka Debnath      17                     NULL                 NULL
Sanjeev Sasmal        2                      NULL                 NULL
Subrajeet Sahoo       1                      NULL                 NULL
Pragnya Sonal         NULL                   2                    NULL
Pragnya Sonal         NULL                   NULL                 1

Aber ich möchte diese Tabelle in diesem Format neu anordnen:

Admin                 2                      NULL                 NULL
Pragnya Sonal         7                      2                    1
Priyanka Debnath      17                     NULL                 NULL
Sanjeev Sasmal        2                      NULL                 NULL
Subrajeet Sahoo       1                      NULL                 NULL

Kann mir jemand helfen, das zu lösen, vielen Dank im Voraus

6
Tufan Chand

Sie können die Gruppierung verwenden, um nur eine Zeile pro Name zu erhalten. Wenn mehr als eine Zeile für denselben Namen und dieselbe Spalte Werte enthält, müssen Sie entscheiden, was mit diesen Werten geschehen soll: Möchten Sie Minimum, Maximum, Summe, Durchschnitt usw. anzeigen? Also zum Beispiel:

SELECT Name, min(Opp), min(Bid), min(Pro) FROM your_table GROUP BY Name
6
Simo Kivistö

Ich habe versucht, etwas Ähnliches wie die Ops-Frage zu erreichen, aber mit einem kleinen Unterschied. Ich habe mich einigen Tabellen angeschlossen und versucht festzustellen, ob eine Bedingung "wahr" ist oder nicht. Dank der akzeptierten Antwort von @ Simo Kivistö konnte ich mich an meine Bedürfnisse anpassen.

Ich habe ähnliche Ergebnisse wie Op. Meine Stadt und meine Staaten wurden dupliziert.

Ursprüngliche Abfrage:

SELECT 
    TABLE1.CITY,
    TABLE1.STATE,
    CASE WHEN TABLE2.COLUMNA IS NULL THEN 0 ELSE 1 END AS IS_TRUE,
    CASE WHEN TABLE3.COLUMNZ IS NULL THEN 0 ELSE 1 END AS IS_STUFF
FROM
    TABLE1
    LEFT JOIN TABLE2 ON TABLE2.COLUMNA = TABLE1.STATE
    LEFT JOIN TABLE3 ON TABLE3.COLUMNZ = TABLE1.STATE

Was zu den folgenden Einschränkungen führte:

CITY                 STATE                   IS_TRUE              IS_STUFF
--------------------------------------------------------------------------
Los Angeles           CA                     0                    1
Los Angeles           CA                     1                    0
Denver                CO                     1                    0
Denver                CO                     0                    0

Ich habe mit MAX () folgendes gelöst:

SELECT 
    TABLE1.CITY,
    TABLE1.STATE,
    MAX(CASE WHEN TABLE2.COLUMNA IS NULL THEN 0 ELSE 1 END) AS IS_TRUE,
    MAX(CASE WHEN TABLE3.COLUMNZ IS NULL THEN 0 ELSE 1 END) AS IS_STUFF
FROM
    TABLE1
    LEFT JOIN TABLE2 ON TABLE2.COLUMNA = TABLE1.STATE
    LEFT JOIN TABLE3 ON TABLE3.COLUMNZ = TABLE1.STATE
GROUP BY
    TABLE1.CITY,
    TABLE1.STATE

Ergebnisse:

CITY                 STATE                   IS_TRUE              IS_STUFF
--------------------------------------------------------------------------
Los Angeles           CA                     1                    1
Denver                CO                     1                    0
0
Phil