2016-07-11 2 views
0

У меня есть таблица, как показано нижеСумма столбцов для похож каждой строки

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]  ... 

Пожалуйста, обратите внимание, что моя таблица имеет около 10 более столбцов.

Я набор данных (= личное имя «Йон», фамилия = «лань», электронная почта = «[email protected]» и т.д.)

Я хочу, чтобы проверить каждую строку для количества столбцов, имеет такое же значение, как столбцы в наборе данных

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 

и выбрать только те строки с числом similiarities больше чем 3.

+0

Что? Пожалуйста, объясните, как вы дошли до этого выхода – sagi

ответ

1

делает ли это то, что вы хотите?

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

Это именно то, что мне нужно, спасибо! –