Ich habe Tabelle wie folgt:Bienenstock Wie können die konditionsspezifischen Werte erhöht werden?
itm numbr
1 2
11 21
NULL 31
12 41
NULL 51
13 61
i mit itm ausgegeben werden soll, numbr und mit extra Spalte, wie unten erwähnt:
itm numbr incr
1 2 1
11 21 1
NULL 31 2
12 41 2
NULL 51 3
13 61 3
die incr sollte nur seinen Wert erhöhen, wenn ITM gleich NULL sollte sonst den gleichen Wert wie vorheriger Wert anzeigen.
1. Ich habe mit row_sequence versucht
select itm,numbr,row_sequence() as incr from tablename;
aber es zeigt 1,2,3,4,5,6.
2. dann habe ich versucht, mit
select itm,numbr,case when itm=NULL then row_sequence()+1 else row_sequence() end as incr from table;
wirft Fehler "Fehler: Runtime org.apache.hadoop.hive.ql.metadata.HiveException: Stateful Ausdrücke können nicht innerhalb von CASE verwendet werden".
bitte beraten Sie mich. tia.
dank @Guillaume. Ich erhalte die Ergebnisse als NULL 202 1, NULL 204 2, 100 200 2, 101 201 2, 103 203 2, 105 205 2, aber ich will nicht von der itm Spalte bestellen. –
Sieht ganz in der Nähe aus! Ich habe vergessen, eine ORDER BY hinzuzufügen (Antwort aktualisiert, jetzt Bestellung von nmbr). Wenn Sie den NULL-Wert in einer bestimmten Reihenfolge zählen, ist eine Bestellklausel unbedingt erforderlich. – Guillaume
das funktioniert gut. Vielen Dank –