Вложенный IIF / Lookup - PullRequest
0 голосов
/ 03 июля 2018

Я новичок в SQL, SSRS и построителе отчетов.

Я пытаюсь сравнить три отдельных набора данных: 1. Поручения (это все заказы на покупку и товары, полученные компанией). 2. Ров (это все описательные данные, доступные на уровне изделия) и 3. Производство (это дамп данных, содержащий информацию об элементах и ​​использовании, поэтому он довольно сильно пересекается с двумя другими наборами данных).

Сначала мне нужно было создать функцию, которая позволяла бы мне проверять ITEM_ID.Value (из poreceipts) на Sku.Value (из рва) и возвращать Series_Desc.Value (из рва). Который выглядит так:

= Lookup (Поля! ITEM_ID.Value, Поля! Sku.Value, Поля! Series_Desc.Value, "ров")

К сожалению, поле Series_Desc для ряда элементов пустое. Вот тут и вступает третий набор данных. Мне нужно иметь возможность проверить, является ли значение пустым, если нет, то оно возвращает Series_Desc.Value ... Если оно пустое, то мне нужно поискать ITEM_ID.Value с BASE_ITEM .Value (из производства набора данных) для возврата COATED_ITEM_ID.Value (снова из производства набора данных), который затем необходимо использовать для поиска Sku.Value и возврата Series_Desc.Value (из рва).

Фуф ... это было глотком, и, надеюсь, это несколько ясно.

Спасибо всем заранее!

1 Ответ

0 голосов
/ 15 июля 2018

Если я вас правильно понимаю, вам нужен только один набор данных, и сервер баз данных выполнит поиск за вас. Запрос для вашего набора данных должен выглядеть примерно так:

SELECT po.*, ISNULL(m.Series_Desc, m2.Series_Desc) AS Series_Desc
FROM poreceipts po
  LEFT OUTER JOIN moat m ON po.ITEM_ID = m.Sku
  LEFT OUTER JOIN poreceipts b ON po.BASE_ITEM = b.ITEM_ID
    LEFT OUTER JOIN moat m2 ON b.COATED_ITEM_ID = m2.Sku;
...