Por que não foi o thread é útil? Após pequenas modificações, tente
awk -F, '
function p(n,A) {s = n
for (i=2; i<=NF; i++) {s = s FS A[i]
A[i] = $i
}
if (n) print s
}
$1==n {for (i=2; i<=NF; i++) if (A[i] !~ "[|]*" $i "[|]*") A[i] = A[i] "|" $i
next
}
{p(n,A)
n = $1
}
END {p(n,A)
}
' file
3,XX|XM|XN,YY|YM|YN,123,1234,MM|MD,-,|A,DD|FD|ED,1235|1233,XC