Несколько наборов данных SSRS: как отображать только записи, которых нет в обоих наборах данных

Я использую SSRS 2008 R2 и создаю отчет с помощью Report Builder 3.0. Мне нужно запросить 2 базы данных, центральную здесь, в штаб-квартире, и спутниковую, в Австралии. У них обоих есть стол под названием "Покупатели". Спутниковый сайт просто содержит меньший набор данных, который мы вернем в центральный позже. У них есть следующие поля; idBuyer, IdCustomer, DateRegistered Прямо сейчас я хочу запросить все записи на сайте Satellite для клиентов (idCustomer), которые еще не находятся в той же таблице в центральном источнике данных. Я использую LookUp, используя idBuyer для присоединения наборов данных в табликсе. . Теперь я просто хочу отфильтровать результаты, в которых idCustomer из набора данных Satellite отсутствует в центральном наборе данных.

Любые указатели будут оценены, поскольку я предполагаю, что это было бы довольно просто, но я не заставляю его работать


person KD84    schedule 03.11.2016    source источник


Ответы (1)


В идеале вы должны делать это в SQL. Это сделало бы отчет намного быстрее.

SELCT ID FROM SATELLITE WHERE ID NOT IN (SELECT ID FROM CENTRAL)

Однако это не всегда возможно, поэтому вы можете отфильтровать базу данных Satellite, идентификатор которой отсутствует в CENTRAL ID, с помощью функции InSTR ing.

В качестве фильтра установите Выражение на idBuyer.

=IIF(INSTR("|" & Fields!idBuyer.Value & "|", "|" & JOIN(LookupSet(1, 1, Fields!idBuyer.Value, "CENTRAL"), "|") & "|"), 0, 1)

Это создаст строку идентификаторов из CENTRAL db и проверит, есть ли в ней идентификатор из Sattelite DB. Если ID находится в CENTRAL db, строка получает 0, иначе 1. Затем установите значение 1.

введите здесь описание изображения

Каналы (|) используются для разделения значений, поэтому он не может найти 25, когда у вас есть 125 или 251 в списке.

person Hannover Fist    schedule 03.11.2016