다음 쿼리 에서와 같은 생각 사용 이 놀라운 대답 하여 ypercube를 :
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY
(
SELECT
ID,
SomeCol AS MyTest
FROM dbo.Customers
) AS x;
다음과 같이 작동합니다.
경우 dbo.Customers
라는 이름의 열이 SomeCol
, 다음 SomeCol
에 SomeCol AS MyTest
같이 해결됩니다 dbo.Customers.SomeCol
;
테이블에 그러한 열이 없으면 참조는 여전히 유효합니다. 이제는 다음과 같이 해석됩니다 dummy.SomeCol
. dummy
열은 해당 컨텍스트에서 참조 될 수 있습니다.
그런 식으로 여러 "예비"열을 지정할 수 있습니다. 비결은 이러한 열에 테이블 별칭을 사용하지 않는 것입니다 (대부분의 상황에서 멍청한 방법이지만이 경우 테이블 별칭을 생략하면 문제를 해결하는 데 도움이됩니다).
테이블이 조인에 사용되고 다른 테이블에 자체 테이블이있는 SomeCol
경우 트릭이 계속 작동하도록하기 위해 조인에서 테이블을 사용하기 전에 위의 쿼리를 파생 테이블로 사용해야 할 수 있습니다.
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 ...
;