У меня есть таблица, в которую входят данные, в которые я хочу захватить все строки с нулевым флагом, а также строки с положительным флагом по своему выбору, а затем я хочу удалить все данные из запроса, который содержит одинаковыеданные, но имеет отрицательное значение флага. В настоящее время я обрабатываю все это во внешнем интерфейсе, собирая все мои 0 и положительные значения флага, затем собирая все мои отрицательные значения и удаляя их из моего первого результата, установив все строки с флагом> = 0, которые соответствуют строкам отрицательного флага.
Эти вещи всегда немного описать словами, поэтому вот пример с моим набором данных, который выглядит примерно так:
flag name loc
0 Fred USA
-1 Fred USA
1 Fred CANADA
0 Ryan CANADA
0 Steph SPAIN
-1 Steph SPAIN
1 Steph CANADA
-2 Steph CANADA
2 Steph RUSSIA
Если бы я хотел, чтобы все данные были помечены флагом1, я ожидал бы вернуть следующее
flag name loc
1 Fred CANADA
0 Ryan CANADA
1 Steph CANADA
Если бы flag был просто 2, я бы хотел
flag name loc
0 Fred USA
0 Ryan CANADA
2 Steph RUSSIA
И, наконец, если flag был 1 ИЛИ 2, я бы хотел
flag name loc
1 Fred CANADA
0 Ryan CANADA
2 Steph RUSSIA
Обратите внимание, что хотя флаг в этом примере выглядит последовательным, нельзя предполагать, что отмеченный выше элемент является последней помеченной строкой, которую нужно выбрать. Кроме того, это подзапрос для более крупного запроса, который собирает информацию на основе этого запроса. Основной запрос может содержать любое количество флагов.
Эта операция выполнима в запросе, или я должен продолжать выполнять тяжелую работу во внешнем интерфейсе?
Скрипка: http://sqlfiddle.com/#!18/de297/1
Спасибо