我得爲您解答,我正在嘗試合併兩個表格,我找不到正確的查詢。SQLServer加入兩個表格
我有兩個表: T1:1column,擁有X記錄 T2:1column,擁有ÿ記錄 注:Y永遠不可能大於X,但它往往比較小的這一個
我要加入這些表爲了有一個兩列的表 t3:ColumnFromT1,columnFromT2。
當Y小於X時,T2字段值重複並遍佈我所有其他值,但是我希望在使用來自T2的所有列時獲得NULL。
我怎麼能做到這一點? 謝謝
我得爲您解答,我正在嘗試合併兩個表格,我找不到正確的查詢。SQLServer加入兩個表格
我有兩個表: T1:1column,擁有X記錄 T2:1column,擁有ÿ記錄 注:Y永遠不可能大於X,但它往往比較小的這一個
我要加入這些表爲了有一個兩列的表 t3:ColumnFromT1,columnFromT2。
當Y小於X時,T2字段值重複並遍佈我所有其他值,但是我希望在使用來自T2的所有列時獲得NULL。
我怎麼能做到這一點? 謝謝
你可以給每個表中的行數的子查詢。然後你可以在該行號上加入。要從第二個表中回收行,請取第一個表的行號的模數%
。
例子:
select Sub1.col1
, Sub2.col1
from (
select row_number() over (order by col1) as rn
, *
from @T1
) Sub1
left join
(
select row_number() over (order by col1) as rn
, *
from @T2
) Sub2
on (Sub1.rn - 1) % (select count(*) from @T2) + 1 = Sub2.rn
測試數據:
declare @t1 table (col1 int)
declare @t2 table (col1 datetime)
insert @t1 values (1), (2), (3), (4), (5)
insert @t2 values ('2010-01-01'), ('2012-02-02')
此打印:
1 2010-01-01
2 2012-02-02
3 2010-01-01
4 2012-02-02
5 2010-01-01
您正在尋找一個左連接(http://www.w3schools.com/sql/sql_join_left.asp)例如。 T1 LEFT JOIN T2
說,他們都有客戶ID列在共同
SELECT *
FROM T1
LEFT JOIN
T2 on t1.CustomerId = T2.CustomerId
這將返回在T1和所有記錄的匹配T2與空值的T2值,他們不匹配。
確保您在一個公共列上連接表(如果需要多個列來執行連接,則使用公共列集)。如果沒有,你正在做一個笛卡兒連接(http://ezinearticles.com/?What-is-a-Cartesian-Join?&id=3560672)
嗨回來了,謝謝tanging。儘管如此,我無法做到這一點,因爲我沒有條件,我所要做的就是根據它們的當前順序綁定這兩個表。我每桌只有一列,不能做「ON
謝謝。聰明的想法 – CoolStraw 2010-10-14 12:22:06