แบบสอบถามต่อไปนี้ใช้ความคิดเช่นเดียวกับในคำตอบที่น่าตื่นตาตื่นใจนี้โดย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 ...
;