Все борюсь с этим странным BO WEBi.
есть один провайдер данных вида: ID, ID2, name, status 1, 8, job1, success 2, 9, job1, error 3, 10, job2, error 4, 11, job2, running 5, 14, job4, running
есть второй провайдер (в другой базе на другом сервере): ID2, name, unit 8, job1, ru01 9, job1, ru02 9, job1, ru03 11, job2, ru04 12, job3, ru05
Хочу получить отчет: name, ID, ID2, status, unit job1, 2, 9, error, ru02 job1, 2, 9, error, ru03 job2, 4, 11, running, ru04 job3, null, 12, null, ru05 job4, 5, 14, running, null
И вот тут возникли две проблемы. 1. Вообще говоря, для склейки достаточно ID2, но WEBi не дает помещать в отчет измерения из разных запросов, если они не смерджены. Поэтому пришлось также смерджить name. Вот только проблема, в моем случае мне крайне желательно иметь full outer join и если в отчет вытащить только соединенные измерения, то он получается, если я не ошибся, а вот стоит только вытащить тот же unit - и все, остаются только значения name и ID2 из второго юниверса. То есть строку job4, 5, 14 и т.д. я уже не вижу, а ее видеть надо, там задание просто, которое не зависит от юнита, а статусы надо показывать по всем заданиям. Причем даже устроит, если не будет предпоследней строки (без статуса не сильно нужны эти строки), но штука в том, что статусы только в первом юниверсе, а юниты - во втором и причем юнит нельзя сделать атрибутом, поскольку юниты в ключе во втором юниверсе. Как быть-то, может кто подсказать?
2. В прочессе борьбы решил сначала опустить первый вопрос и для начала согласиться с тем, что отображаются только те задания, которые есть в юниверсе с юнитами (во втором). Статус определил как атрибут (detail) к ID2 (потому что просто добавлять status оно уже не дает, когда в отчет добавлен unit). Далее вытаскиваю в репорт name, а ID2 пишу как max(ID2), а вот дальше мне надо добавить status... если кидаю его просто, то оно размножает строки (похоже на то, что ID2 вытащили в отчет, но само поле скрыли, а оставили только его атрибут), пробовал писать, что-то типа if ID2 = max(ID2) then status, но тогда оно начало писать #multivalue, пробовал ставить в else ноль или пробел и потом брать всю конструкцию в max (и в min) - пишет в отчете ноль или пробел (в обоих случаях). Даже не знаю - как тут быть, натолкните? Основная идея в том, что нужно отобразить значение статуса, соответствующее строке из первого юниверса, где идентификатор совпадает с max(ID2). Это подзапросом надо или может есть какая функция, позволяющая получить значение атрибута (detail) по значению признака, к которому этот атрибут привязан?
|
|