2016-07-11 22 views
0

Ich habe Tabelle wie untenSumme der similiar Spalten für jede Zeile

doctor_id forename surname email   ... 
1   jon  doe  [email protected]  ... 
2   john  dove [email protected] ... 
3   jane  dane [email protected] ... 
4   foo  bar  [email protected]  ... 
5   bar  foo  [email protected]  ... 

Bitte beachten Sie, dass mein Tisch über 10 weitere Spalten.

Ich habe von Daten (Vorname = "jon", Name = "doe", email = "[email protected]", etc.) eingestellt

ich jede Zeile für Anzahl der Spalten zu überprüfen, ob hat denselben Wert wie Spalten in Satz von Daten

doctor_id forename surname email   ... similiarities 
1   jon  doe  [email protected]  ... 2 
2   john  dove [email protected] ... 0 
3   jane  dane [email protected] ... 0 
4   foo  bar  [email protected]  ... 1 
5   bar  foo  [email protected]  ... 0 

und wählt nur die Zeilen mit der Anzahl der similiarities größer als 3

+0

Was? Bitte erläutern Sie, wie Sie zu diesem Ausgang gekommen sind – sagi

Antwort

1

Ist dies tun, was Sie wollen?

select t.*, 
     ((case when forename = 'jon' then 1 else 0 end) + 
     (case when surname = 'doe' then 1 else 0 end) + 
     (case when email = '[email protected]' then 1 else 0 end) 
     ) as similarities 
from t; 
+0

Dies ist genau das, was ich brauchte, danke! –

Verwandte Themen