Aşağıdaki sorgu ile aynı fikri kullanan bu şaşırtıcı bir cevap ile ypercube :
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY
(
SELECT
ID,
SomeCol AS MyTest
FROM dbo.Customers
) AS x;
Şöyle çalışır:
eğer dbo.Customers
adlı bir sütun vardır SomeCol
, o zaman SomeCol
içinde SomeCol AS MyTest
olarak çözecektir dbo.Customers.SomeCol
;
tablonun böyle bir sütunu yoksa, başvuru hala geçerli olacaktır, çünkü şimdi şu şekilde çözümlenecektir dummy.SomeCol
: dummy
sütunlar bu bağlamda başvurulabilir.
Bu şekilde birden çok "yedek" sütun belirtebilirsiniz. Hile, bu tür sütunlar için tablo takma adını kullanmak değildir (çoğu durumda kaşlarını çatmış bir uygulamadır, ancak bu durumda tablo takma adını atlamak sorunu çözmenize yardımcı olur).
Tablo bir birleşimde kullanılırsa ve diğer tablonun kendi tablosu varsa SomeCol
, hile çalışmasını sağlamak için birleştirme işleminde kullanmadan önce yukarıdaki sorguyu türetilmiş bir tablo olarak kullanmanız gerekebilir:
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 ...
;