2017-06-27 6 views
1

ich eine Tabelle mit einer Struktur ähnlich dem unten haben:hive Abfrage Schlüssel für mehrere Werte abzubilden

|C1|C2|C3| 
|K1|V1|??| 
|K1|V2|??| 
|K1|V3|??| 
|K2|V2|??| 

Ich brauche eine Abfrage zu schreiben, die der Schlüssel überprüft, ob (lässt K1 sagen) ordnet eine spezifischer Wert in irgendeiner Reihe (sagen Sie V2). Wenn dies der Fall ist, wird der Wert in der Spalte C3 als 1 angenommen, andernfalls ist es 0.

Ich würde mich über jede Hilfe freuen.

Antwort

-1

Die folgende Abfrage sollte die gewünschten Ergebnisse liefern. Die Unterabfrage identifiziert alle C1-Werte, die mindestens einmal in C2 einem bestimmten Wert zugeordnet wurden. Wenn ja, dann machen wir die C3 Werte wie 1, sonst zeigen wir 0.

SELECT 
    t1.C1, 
    t1.C2, 
    CASE WHEN t2.C1 IS NOT NULL THEN 1 ELSE 0 END AS C3 
FROM yourTable t1 
LEFT JOIN 
(
    SELECT C1 
    FROM yourTable 
    GROUP BY C1 
    HAVING SUM(CASE WHEN C2 = 'V1' THEN 1 ELSE 0 END) > 0 
) t2 
    ON t1.C1 = t2.C1 
+0

downvoter: Bitte einen Kommentar hinterlassen. –

+0

Vielen Dank. Obwohl ich denke, dass der Join wahrscheinlich ein linker Join sein sollte. – parth

+0

@Parth Lassen Sie mich die Abfrage dann aktualisieren. Ich weiß nicht, warum ich abgelehnt wurde. –

Verwandte Themen