Я бы предпочел использовать логику набора, а не итерировать по таблице с помощью курсора или что-то в этом роде, но если это то, что нужно, это можно сделать.Сложная логика SQL Exclude с операциями на основе набора
Я в основном готовлю представление в хранимой процедуре, которая будет использоваться в другом месте для BI. Сейчас хранимая процедура - это просто оператор выбора, вытягивающий из разных таблиц с приличным количеством объединений и другой случайной логикой.
Вот пример того, как выглядят таблицы. Во-первых, таблица, которая будет возвращена, во-вторых, какие исключения пользователь хочет сделать.
Я хочу посмотреть каждую запись в таблице исключений, а затем применить ее как фильтр к первой таблице, чтобы устранить все строки, в которых находятся элементы. (Это будет немного сложнее в будущем, потому что они могут выбрать, чтобы исключить весь LocationCode, который затем будет каскадом через все WarehouseCodes и все под ним. Это в основном иерархия, но я хочу, чтобы общая идея была опущена).
Я не был уверен, как это сделать с НЕ СУЩЕСТВУЮЩИМ, поскольку мне нужно идти по строкам. Я не уверен, что мне нужно использовать курсор или перебрать по другому пути. Мне интересно, есть ли другой инструмент в SQL, о котором я не знаю.
Любые предложения по эффективному устранению строк на основе других значений таблиц были бы оценены, спасибо.
я был в состоянии использовать второй запрос, и затем в выражении WHERE следует следующее выражение для условного ограничения (AND (t2.WarehouseCode = 'ALL' OR t2.WarehouseCode = t1.WarehouseCode)). – mrshickadance