2017-11-17 2 views
0

auf ImpalaWie nächste Spalte wählen, wenn die vorherige Spalt SQL

Ich Abfrage auf den Tisch sieht shop1 shop1number shop2 shop2number Shop3 shop3number

wie

Kundennamen Ich bin mit SQL verwendet bestimmte Bedingung erfüllt

TOM AB 111 AA 231 AC 321

AMY AC 121 AB 213 AD 231

Franck AD 123 AE 233 AB 234

enter image description here hier sind die Nummern die Kundentreuummer und die Herausforderung ist, wenn ich die Loyalität Nummer von Geschäft 1 (AB) suche, habe ich keine Idee, in welcher Spalte es fällt, wenn Kunden ihre Loyalität ausfüllt Nummer, es ist ihre Wahl, die Nummer bei welcher Reihenfolge sie Profil

+0

Bitte können Sie die Tabelle ein wenig klarer gestalten machen? Vielleicht ein Bild zur Verfügung stellen? – majjam

+0

Ist das 3 Reihen? Shop 1/AAA/Shop 2/BBB/Shop 3/CCC oder eine einzelne Spalte in einer Zeile? –

+0

Nein, das ist eine Zeile mit 6 Spalten, also sieht die Tabelle so aus –

Antwort

0

Wenn ich Sie richtig verstehe, Sie suchen alle Loyalität Zahlen mit einem Geschäft verbunden, so könnte eine Möglichkeit, Zeilen Daten zu Spalten zuerst zu bringen Verwenden Sie union all und suchen Sie dann nach einem Geschäft; sagen wir mal AB.

select * from 
(
select customername, shop1 as shop, shop1number as shopnumber 
from table1 
union all 
select customername, shop2 as shop, shop2number as shopnumber 
from table1 
union all 
select customername, shop3 as shop, shop3number as shopnumber 
from table1 
    ) t 
where t.shop = 'AB'; 

Ergebnis:

+--------------+------+------------+ 
| customername | shop | shopnumber | 
+--------------+------+------------+ 
| AMY   | AB |  213 | 
| TOM   | AB |  111 | 
| Franck  | AB |  234 | 
+--------------+------+------------+ 

DEMO

Verwandte Themen