El problema, como se ha mencionado, es que se está seleccionando PEID de dos tablas, la solución es especificar qué PEID qué quiere, por ejemplo
SELECT tb.*
FROM (
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
) AS tb;
Aparte de eso, como Chris Lively señala córner, un comentario el SELECT externo es totalmente superfluo. Lo siguiente es totalmente equivalente al primero.
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
o incluso
SELECT *
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
pero por favor evitar el uso de SELECT * siempre que sea posible. Puede funcionar mientras realiza consultas interactivas para guardar el tipeo, pero en el código de producción nunca lo use.
Sólo por curiosidad, ¿por qué tienes el exterior "seleccione tb. *"? – NotMe