You say there is "no relationship", however, what defines that KidID 20 appears on the same line as ComplainID 4 and SuggestionID 3? Is it just "random"?
This is another total guess, without DDL, sample data and Expected results, and is completely untested but..:
WITH Crn AS (
SELECT C.[Subject] AS NewComplains, C.ID AS ComplainID,
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RN --Change your ORDER BY to be whatever you like/need
FROM Complains C
WHERE C.ReadStatus = 'false'),
Srn AS (
SELECT S.[Subject] AS NewSuggestions, S.ID AS SuggestionID,
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RN --Change your ORDER BY to be whatever you like/need
FROM Suggestions S
WHERE S.ReadStatus = 'false'),
KDrn AS (
SELECT KD.KidID, KD.Name,
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RN --Change your ORDER BY to be whatever you like/need
FROM KidsData KD
WHERE KD.KidID = (Select KidID from Payments where EndDate < GETDATE())) --This will only return one row?? Seems unlikely
SELECT Crn.NewComplains, Crn.ComplainID,
Srn.NewSuggestions, Srn.SuggestionID,
KDrn.KidID, KDrn.Name
FROM Crn
FULL OUTER JOIN Srn ON Crn.RN = Srn.RN
FULL OUTER JOIN KDrn ON Crn.RN = KDrn.RN OR Srn.RN = KDrn.RN; --Because C might be NULL
If there any errors in the syntax, you'll need to resolve those.
Thom~
Excuse my typos and sometimes awful grammar. My fingers work faster than my brain does.
Larnu.uk