2015-04-02 105 views
0

我可以自己加入「虛擬」表(某些表的聯合結果)嗎?SQL Server自動加入虛擬表

SELECT 
     [VIRTUAL_TABLE].[Name] AS [name], 
     [VIRTUAL_TABLE].[ID] AS [id] 
    FROM (
     SELECT 
     ... 
     FROM [...] 

     UNION 

     SELECT 
     ... 
     FROM [...] 
    ) AS [VIRTUAL_TABLE] 
    -- INNER JOIN [VIRTUAL_TABLE] ON ... ??? 

我正在使用SQL Server。

Thanx!

+1

你是什麼意思虛表? – 2015-04-02 10:32:32

+0

虛擬表進來SQlite和MS SQL我們可以使用臨時表和是的,我們可以使用臨時表之間的聯合。 – 2015-04-02 10:37:32

回答

2

是的,你可以用一個公用表表達式(CTE)做到這一點:

with virtualTable as(
    SELECT 
    ... 
    FROM [...] 

    UNION 

    SELECT 
    ... 
    FROM [...] 
) 
select vt1.field, 
     vt2.field 
from virtualTable vt1 join virtualTable vt2 on vt1.someField = vt2.otherField 
+0

超級!有用!感謝名單! – Vladimir 2015-04-02 11:19:16

0

,如果你想它經典寫,你要複製你的TSQL代碼。但是,你可以使用CTE來做到這一點。

也許這代碼解決您的問題:

SELECT VIRTUAL_TABLE_1.* 
FROM (SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_1, 
    (SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_2 
WHERE VIRTUAL_TABLE_1.ID = VIRTUAL_TABLE_2.ID