Ответ 1
Проблема, как уже упоминалось, заключается в том, что вы выбираете PEID из двух таблиц, решение должно указать, какой PEID вы хотите, например
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;
В стороне, как замечает Крис Лайвли в комментарии, внешний SELECT полностью лишний. Следующее полностью эквивалентно первому.
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
или даже
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
но избегать использования SELECT * по возможности. Он может работать, когда вы делаете интерактивные запросы, чтобы сохранить ввод текста, но в производственном коде никогда не используйте его.