This will resolve that:

=LET(
A,FILTER(Database!B2:U88,ISNUMBER(XMATCH(Database!A2:A88,B5:J5))),
B,VSTACK(Database!B1:U1,A),
C,FILTER(B,BYCOL(B,LAMBDA(z,ISNA(XMATCH("No",z))))),
D,TAKE(C,1),
E,TRANSPOSE(FILTER(D,D<>0)),
F,DROP(C,1,1),
G,BYCOL(F,LAMBDA(x,TEXTJOIN(";",,x))),
H,TRANSPOSE(FILTER(G,(LEFT(G,1)<>"Y")*(G<>""))),
I,IFERROR(DROP(REDUCE("",H,LAMBDA(x,y,VSTACK(x,--UNIQUE(TEXTSPLIT(y,";"),1)))),1),""),
J,BYROW(I,LAMBDA(x,TEXTJOIN(", ",,IFERROR(VLOOKUP(x,Database!X4:Y14,2,FALSE),"")))),
BYROW(HSTACK(E,J),LAMBDA(X,IFERROR(TEXTJOIN(", ",,X),""))))
I have not yet looked at Hans' formula.