Я хотел бы получить все строки, которые имеют разные записи в полях anln1 и anln2. Для этого мне нужен подходящий оператор OpenSQL.
Например. есть следующая таблица:
anln1 | anln2 | datum | psp | przt
------------------------------------------
10007 | 0 | 20140101 | 12345678 | 1
10007 | 0 | 20140101 | 11111111 | 99
10007 | 1 | 20140101 | 12345678 | 1
10007 | 1 | 20140101 | 11111111 | 99
Все записи для anln1 + anln2 должны повторять комбинацию данных, psp и przt strong > если есть другой подномер, например anln2 = 1.
К сожалению, в моей таблице есть нарушения этой спецификации (SQLFiddle: http://sqlfiddle.com/#!2/f5d1f):
anln1 | anln2 | datum | psp | przt
------------------------------------------
10000 | 0 | 20140101 | 12345678 | 60
10000 | 0 | 20140101 | 11111111 | 40
10000 | 1 | 20140101 | 11111111 | 100
10000 | 2 | 20140101 | 11111111 | 100
10000 | 3 | 20140101 | 22222222 | 100
10001 | 0 | 20140101 | 12312312 | 100
10001 | 1 | 20140101 | 12312312 | 100
10001 | 2 | 20140101 | 12312312 | 100
10002 | 0 | 20140101 | 11111111 | 100
10003 | 0 | 20140101 | 11111111 | 100
10004 | 0 | 20140101 | 11111111 | 100
10005 | 0 | 20140101 | 22222222 | 100
10005 | 1 | 20140101 | 33333333 | 100
10006 | 0 | 20140101 | 11111111 | 20
10006 | 0 | 20140101 | 22222222 | 80
10006 | 1 | 20140101 | 11111111 | 30
10006 | 1 | 20140101 | 11111111 | 70
10007 | 0 | 20140101 | 12345678 | 1
10007 | 0 | 20140101 | 11111111 | 99
10007 | 1 | 20140101 | 12345678 | 1
10007 | 1 | 20140101 | 11111111 | 99
В результате для моего запроса мне нужно идентифицировать все строки, в которых нарушена моя спецификация. Правильные строки следует просто опустить. Правильные строки - это те, где anln1 равно 10001, 10002, 10003, 10004, 10007.
Итак, результат должен выглядеть так:
anln1 | anln2 | datum | psp | przt
------------------------------------------
10000 | 0 | 20140101 | 12345678 | 60
10000 | 0 | 20140101 | 11111111 | 40
10000 | 1 | 20140101 | 11111111 | 100
10000 | 2 | 20140101 | 11111111 | 100
10000 | 3 | 20140101 | 22222222 | 100
10005 | 0 | 20140101 | 22222222 | 100
10005 | 1 | 20140101 | 33333333 | 100
10006 | 0 | 20140101 | 11111111 | 20
10006 | 0 | 20140101 | 22222222 | 80
10006 | 1 | 20140101 | 11111111 | 30
10006 | 1 | 20140101 | 11111111 | 70
Я пробовал что-то с GROUP BY, HAVING и COUNT (...)> 1, но не получил полезного результата. Можно ли это решить с помощью (Open) SQL?
Очень жду вашей помощи! Пожалуйста, используйте мой SQLFiddle (http://sqlfiddle.com/#!2/f5d1f), чтобы попробовать около.