I'm re-reading my last post, and realize my script doesn't print a correct output : the script is wrong ! 
edit:
I got it : it was because of empty values that didn't show up.
here's what seem to work at the moment
Code:
#!/usr/bin/gawk -f
BEGIN{
FS="|"
}
{
!(H[$2])H[$2]++
!(F[FILENAME])F[FILENAME]++
D[FILENAME,$2]=$1
}
END{
for(h in H){
r = "1"
R[r] = R[r] ? R[r]"\t"h : h
for(f in F){
r++
d = D[f,h] ? D[f,h] : " "
R[r] = R[r] ? R[r]"\t"d : d
}
}
nb=length(R)
for(i=1;i<=nb;i++)print R[i]
}
Code:
./myscript logFiles*
400 410 200 345
45 13 34
53 32 75
22 45 45
75 45 21
98 43 46