курсор - как сравнить и выбрать уникальные записи - PullRequest
0 голосов
/ 01 декабря 2010

Если мне нужно сравнить два курсора и повторить уникальные значения, как мне это сделать

пример CURSOR c_stock_option IS Выберите empid, name, ssn, isenrolled от сотрудника, где isenrolled = 1

CURSORc_espp_option IS Выберите empid, name, ssn, isenrolled от сотрудника, где isenrolled = 2

Теперь я хочу отклонить все записи во вторых курсорах, которые находятся в курсоре 1 select, как мне это сделать

1 Ответ

0 голосов
/ 14 апреля 2011

Ммм ..... по определению, все строки, в которых isenrolled = 2, не пересекаются со строками, в которых isenrolled = 1.Но я думаю, что вы задаете более общий вопрос о том, как исключить строки из одного набора результатов, которые находятся в другом.

Если это так, вы можете использовать несколько разных подходов:

1)

CURSOR c_stock_option IS 
   Select empid, name, ssn, isenrolled from employee where isenrolled=1
   MINUS
   Select empid, name, ssn, isenrolled from employee where isenrolled=2

2)

CURSOR c_stock_option IS 
   Select empid, name, ssn, isenrolled from employee 
   where isenrolled=1
     and empid not in (
      Select empid, name, ssn, isenrolled from employee where isenrolled=2)

3)

CURSOR c_stock_option IS 
   Select empid, name, ssn, isenrolled from employee e
   where isenrolled=1
     and not exists(
      Select 1 from employee where e.empid = employee.empid and isenrolled=2)

Выбор зависит от вашей ситуации, модели данных, индексации и т. Д.

...