Permintaan berikut menggunakan ide yang sama seperti dalam jawaban yang luar biasa ini oleh ypercube :
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY
(
SELECT
ID,
SomeCol AS MyTest
FROM dbo.Customers
) AS x;
Ini berfungsi seperti ini:
jika dbo.Customers
memiliki kolom bernama SomeCol
, maka SomeCol
di SomeCol AS MyTest
akan menyelesaikan sebagai dbo.Customers.SomeCol
;
jika tabel tidak memiliki kolom seperti itu, referensi masih akan valid, karena sekarang akan diselesaikan sebagai dummy.SomeCol
: dummy
kolom dapat dirujuk dalam konteks itu.
Anda dapat menentukan beberapa kolom "cadangan" dengan cara itu. Triknya adalah tidak menggunakan alias tabel untuk kolom tersebut (yang merupakan praktik yang disukai di sebagian besar situasi, tetapi dalam hal ini menghilangkan alias tabel membantu Anda untuk menyelesaikan masalah).
Jika tabel digunakan dalam gabungan dan tabel lainnya memiliki tabel sendiri SomeCol
, Anda mungkin perlu menggunakan kueri di atas sebagai tabel turunan sebelum menggunakannya dalam gabungan agar trik tetap berfungsi, seperti ini:
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 ...
;