A consulta a seguir usa a mesma ideia que nesta resposta incrível do ypercube :
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY
(
SELECT
ID,
SomeCol AS MyTest
FROM dbo.Customers
) AS x;
Funciona assim:
Se dbo.Customerstem uma coluna chamada SomeCol, em seguida, SomeColem SomeCol AS MyTestresolverá como dbo.Customers.SomeCol;
se a tabela não possuir essa coluna, a referência ainda será válida, porque agora será resolvida como dummy.SomeCol: as dummycolunas podem ser referenciadas nesse contexto.
Você pode especificar várias colunas "sobressalentes" dessa maneira. O truque é não usar o alias da tabela para essas colunas (que é uma prática desaprovada na maioria das situações, mas, nesse caso, a omissão do alias da tabela ajuda a resolver o problema).
Se a tabela for usada em uma junção e a outra tabela tiver sua própria SomeCol, você provavelmente precisará usar a consulta acima como uma tabela derivada antes de usá-la na junção para manter o truque funcionando, algo como isto:
SELECT ...
FROM
(
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY (
SELECT
ID,
SomeCol AS MyTest
FROM dbo.Customers
) AS x
) AS cust
INNER JOIN ...
;