Я думаю, что ваша модель данных может быть немного странной. Таблица цен заполняется только для отчета? Я мог бы просмотреть свои таблицы, но если бы мне пришлось использовать эту настройку, я бы сделал что-то вроде этого:
Для цен на товары в указанном регионе (НЕ МАГАЗИН). Используйте этот выбор в sproc, который принимает регион в качестве параметра. Если я все сделал правильно, он вернет цену региона, если она есть, и цену продукта, если ее нет.
Выберите Product, Price из dbo.prices, где (Region = @region) или (region равен NULL, а продукт отсутствует) (выберите продукт из цен, где region = @Region))
Для цен на товары в указанном магазине. Используйте этот выбор в sproc, который принимает хранилище в качестве параметра. Вам также нужно будет пройти в регион или выяснить это из магазина. Если я все сделал правильно, он вернет цену магазина, если она есть, то цена региона, затем цена товара.
Выберите продукт, цену из dbo.prices, где (store = @store) или (store - NULL AND region = @Region, а продукта нет в (выберите продукт из цен, где store = @store) или (store - NULL и region имеет значение NULL, а продукт отсутствует (выберите продукт из цен, где region = @Region))
Чтобы получить цены из нескольких регионов или магазинов, просто выполните одно из указанных выше действий несколько раз (в цикле или курсоре).