2014-04-25 58 views
0

這裏是我的模式的簡化版本。使用Sql Server 2012企業版。在結果集中連接來自2個表的列

CREATE table #abc (a INT , b INT); 
CREATE TABLE #def (a INT , c INT ,d INT); 

INSERT INTO #abc values(1,23),(1,24); 
INSERT INTO #def VALUES(1,53,54),(1,56,57) 

表#abc接合到#def ON COLUMN一個

基本上它是從基於列兩個表的行的級聯。嘗試內部連接\交叉應用,但他們都可以理解地交叉連接結果集的類型。我有使用另一個臨時表(然後更新)的解決方法,但有種感覺,這可以在單選中輕鬆完成。我錯過了一些簡單的東西。

需要輸出是這樣的:

a b c d 
1 23 53 54 
1 24 56 57 

感謝
-N

+0

我沒有看到#abc和#dbf之間的關係。 53分是23分,還是24分是56分?它是一個訂單事物(每個表中的第一行和第二行是否相互映射)? –

回答

0

您需要某種順序號將表連接在一起。那麼您可以使用row_number()如下之一:

select a.a, a.b, d.c, d.d 
from (select a.*, row_number() over (order by (select NULL)) as seqnum 
     from #abc a 
    ) a join 
    (select d.*, row_number() over (order by (select NULL)) as seqnum 
     from #def d 
    ) d 
    on a.seqnum = d.seqnum; 

現在的謹慎,小心,謹慎。子句並沒有真正指定順序,所以順序號可能不是你所期望的。你應該有一個專欄來指定排序。

0

你需要有各行中的唯一鍵值,以便能夠參加表格中,你會喜歡的方式。然後,內部聯接將返回您需要的結果集。

如果您在表格之間引入參照完整性,則會強制執行並返回預期結果。

相關問題