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

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

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

1 ответ

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

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

    Однако это не всегда возможно, поэтому вы можете отфильтровать спутниковую БД, где идентификатор не находится в Центральном идентификаторе, с помощью функции InSTR ing.

    Для фильтра задайте выражение idBuyer

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

    Это создаст строку идентификаторов из Центральной БД и посмотрит, находится ли в ней идентификатор из БД Sattelite. Если ID находится в центральной БД, строка получает 0 еще 1. Затем установите значение 1.

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

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