Это немного затянуто, так как у меня не было образцов данных для работы. Я создал примерные данные следующим образом.
CREATE TABLE TableA(aID int, a1 varchar(20), a2 varchar(20))
GO
CREATE TABLE TableB(bID int, b1 varchar(20), b2 varchar(20))
GO
CREATE TABLE TableC(cID int, c1 varchar(20), c2 varchar(20))
GO
INSERT INTO TableA VALUES (1,'Red', 'Green'), (2,'Blue', 'Purple')
INSERT INTO TableB VALUES (1,'Dave', 'Bob'), (1,'Geoff', 'Harry'), (2,'Jane', 'Mary'), (2,'Anne', 'Sue')
INSERT INTO TableC VALUES (1,'Dog', 'Cat'), (2,'Goat', 'Cow'), (2,'Sheep', 'Lamb'), (2,'Donkey', 'Horse'), (2,'Lizard', 'Frog')
Затем я создал запрос, который объединяет таблицы вместе, он включает столбец «TableName», чтобы указать, из какой таблицы он взят, мы будем использовать его для упорядочивания столбцов в матрице. Он также содержит номер строки для каждой строки в таблице. Запрос выглядит так.
SELECT
*
, RowN = ROW_NUMBER() OVER(PARTITION BY aID, TableName ORDER BY ID, FirstColumn, SecondColumn)
FROM (
SELECT
a.*
, 'Table B' as TableName
, bID as ID, b1 as FirstColumn, b2 as SecondColumn
FROM TableA a
JOIN TableB b on a.aID = b.bID
UNION ALL
SELECT
a.*
, 'Table C' as TableName
, c.*
FROM TableA a
JOIN TableC c on a.aID = c.cID
) u
В дизайнере портов я добавил управление матрицей. Я установил группы строк для группировки по aID
и Rown
и добавил группу столбцов по TableName
.
Наконец, я установил для свойства Hide duplicates
первых трех столбцов значение DataSet1
.
Дизайн отчета выглядит следующим образом. .com/e3cRj.png" alt="введите здесь описание изображения">
Конечный результат выглядит так...
![введите здесь описание изображения](https://i.stack.imgur.com/5si91.png)
Это не идеально, но этого должно быть достаточно, чтобы вы начали.
person
Alan Schofield
schedule
03.12.2019
NULL
дляC ID
, а другие дляB ID
... На основе этого может быть возможно фильтровать подтаблицы. Для подтаблицы B -IIF(IsNothing(Fields!C_ID.Value), Nothing, Fields!B_ID.Value)
или что-то в этом роде. Или просто скройте строки, гдеC_ID
равноNULL
. - person Steve-o169   schedule 29.11.2019