2016-05-04 2 views
0

У меня есть два столбца, как, что:Итерация через две колонки и сравнить их

Результат-Set 1: select sPersonID from tPersonData where x < 50

Результат-Set 2: select sPersonID from tPersonData where x > 50

Я хотел бы перебирать колонке 1 и хотят, чтобы проверить, если каждый sPeronID, по крайней мере 1 раз присутствует в колонке 2.

Пример данных для столбцов:

Result-Set 1: 
00/510 
00/650 
00/644 
00/690 

Result-Set 2: 
00/510 
00/640 
00/644 

и ожидаемый результат должен быть как TRUE/FALSE

+1

Вам не нужны никакие петли или хранимые процедуры для этого. Добавьте пример данных таблицы и ожидаемый результат. – jarlh

+0

Вы говорите о столбцах, но я бы скорее сказал результирующие наборы. – jarlh

+0

Я сменил шляпу. – xileb0

ответ

1

автообъединение tPersonData с помощью левого соединения и группы по sPersonID с левой стороны и подсчитать количество соответствующих записей с правой стороны:

select t1.sPersonID, if(count(t2.sPersonID)=0,'false','true') as result 
from tPersonData t1 
left join tPersonData t2 on t1.sPersonID=t2.sPersonID and t2.x>50 
where t1.x<50 
group by t1.sPersonID 
0

Вы могли бы попробовать это

select case 
     when a = b then 
      'TRUE' 
     else 
      'FALSE' 
     end 
    from (select (select COUNT(sPersonID) 
        from tPersonData t1 
       where t1.x < 50 
        AND t1.sPersonID IN 
         (select sPersonID from tPersonData where x > 50)) a, 
       (select COUNT(sPersonID) from tPersonData t1 where t1.x < 50) b 
      from dual) 
Смежные вопросы