This is a little long winded as I didn't have any sample data to work with. I created come sample data as follows.
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')
I then created a query that joins the tables together, it includes a 'TableName' column to indicate which table it came from, we will use this to arrange the columns in a matrix. It also contains a row number for each row per table. The query looks like this.
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
In the port designer, I added a matrix control. I set the row groups to group by aID
and Rown
and added a column group by TableName
.
Finally I set the first three columns Hide duplicates
property to DataSet1
The report design looks like this..

The final output looks like this...

It's not perfect but it should be enough to get you going.