Можно ли представить / заполнить связанные данные в предварительно определенных столбцах?

Как можно изменить представление данных, чтобы я получил имена принцесс по двум столбцам, как показано в «Разыскиваемых выходных данных». Группировка столбцов по имени Рыцаря дает мне столбец «Принцесса» для каждого имени принцессы. Мне нужны только две колонки, так как я знаю, что у рыцаря никогда не будет больше двух принцесс.

Данные, которые я получаю из своего источника ввода, показаны ниже как «Входные данные». К сожалению, я не могу использовать SQL для управления данными, поскольку QUERY основан на FetchXML. Единственные инструменты, которые я могу использовать, - это то, что я получаю от служб Reporting Services (я использую Visual Studio 2015), так что имейте это в виду, предлагая любые решения.

Технически это соотношение 1: M между рыцарем и принцессой, но в системе есть ограничение, так что у рыцаря никогда не будет более двух принцев. У рыцаря может быть 0, 1 или 2 принцессы.

Входные данные

_________________________________
|    Knight     |   Princess    |
|_______________|_______________|
|_____Adam______|_____Anna______|
|_____Adam______|____Angelica___|
|_____Erik______|_____Erika_____|
|_____Erik______|______Eva______|

Вывод

_________________________________________________________________________________
|    Knight     |   Princess 1  |   Princess 2  |   Princess 3  |   Princess 4  |
|_______________|_______________|_______________|_______________|_______________|
|_____Adam______|_____Anna______|_____Angelica__|_______________|_______________|
|_____Erik______|_______________|_______________|_____Erika_____|_____Eva_______|

Требуются результаты

_________________________________________________
|    Knight     |   Princess 1  |   Princess 2  |
|_______________|_______________|_______________|
|_____Adam______|_____Anna______|___Angelica____|
|_____Erik______|_____Erika_____|_____Eva_______|

Есть предложения?


person pieeetr    schedule 05.03.2018    source источник


Ответы (3)


Вы можете сделать это, используя select и lookupset в наборе данных:

=Choose(1,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))
=Choose(2,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))
=Choose(3,LookupSet(Fields!Knight.Value,Fields!Knight.Value,Fields!Princess.Value,"InputData"))

и т.п.

В каждом столбце.

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

person RET    schedule 14.03.2018

Это практически невозможно, но вам повезло, имея (вполне разумный) лимит в 2 принцессы на рыцаря. Еще немного, и вы застрянете.

Я бы использовал для этого объект Table, а не объект Matrix. Первый столбец - это Рыцарь.

В следующем столбце есть статический заголовок «Принцесса 1» с выражением:

=Min(Fields!Princess.Value)

В 3-м столбце есть статический заголовок «Принцесса 2» с выражением:

=Iif ( Min(Fields!Princess.Value) = Max(Fields!Princess.Value) , "" , Max(Fields!Princess.Value) )
person Mike Honey    schedule 12.03.2018
comment
Просто для уточнения. Если бы союзу рыцарей каким-то образом в будущем удалось договориться о женитьбе на трех или даже четырех принцессах, нам бы не повезло? - person pieeetr; 12.03.2018
comment
Да, я не могу придумать какой-либо метод, который сработал бы для этого. - person Mike Honey; 13.03.2018

Вы можете создать таблицу с группой строк от Knight и в теле этой группы строк добавить табликс с columngroup от Princess. Единственная проблема была бы в том, что заголовки столбцов Princess 1..x должны быть каким-то образом жестко закодированы в базовой таблице.

Вот как я это сделал

person sprengo    schedule 14.03.2018