2015-10-20 84 views
1

我想結合兩個數據集t1和t2:組合2個SAS數據集

數據集1(一變量X)

X 
1 
2 
3 
4 

數據集2(一個可變Y)

Y 
A 
B 
C 

合併成一個新的數據集 dataset1 + 2 t3

X Y 
1 A 
1 B 
1 C 
2 A 
2 B 
2 C 
3 A 
3 B 
3 C 
4 A 
4 B 
4 C 

正如你所看到的,我沒有共同的變數,我試過一套不同的口味和合並組合

data t3 ; merge t1 t2 ; run ; 
data t3 ; set t1 ; set t2 ; run ; 
data t3 ; set t1 ; if _n_ then set t2 ; run ; 
data t3 ; set t1 t2 ; run ; 

任何幫助(SAS或SQL)大加讚賞

問候

SW

回答

0

這會工作,併產生預期的結果,基本上你在SAS看着笛卡爾積,

proc sql; 
    select t1.*,t2.* 
    from t1 ,t2 
    ; 
quit; 

Output of above Code

+0

謝謝。簡單而直接。它像一個魅力一樣工作! – Sylvain

+0

是我的榮幸,你能請註明有用的答案:) – Vishant

0

使用CROSS JOIN

CREATE TABLE #tab1(X INT); 

CREATE TABLE #tab2(Y NVARCHAR(12)); 

INSERT INTO #tab1 
VALUES (1), (2), (3), (4); 

INSERT INTO #tab2 
VALUES ('A'), ('B'), ('C'); 

SELECT X, Y 
FROM #tab1 
CROSS JOIN #tab2 
ORDER BY X, Y; 

LiveDemo

+1

哇。我們已經在SE自己搗鼓!很高興知道。由於 – Utsav

+0

@Utsav其實SEDE是用於查詢SE數據庫(見邊欄上表),但我們可以創建臨時表和臨時變量爲什麼不在這裏使用它:) – lad2025

0

不知道在DB所以這應該工作在最

select a.X,b.Y from 
dataset1 a , dataset2 b 
where 1=1 
0
DECLARE @Table1 TABLE 
    (X int) 
; 

INSERT INTO @Table1 
    (X) 
VALUES 
    (1), 
    (2), 
    (3), 
    (4) 
; 

DECLARE @Table2 TABLE 
    (Y varchar(1)) 
; 

INSERT INTO @Table2 
    (Y) 
VALUES 
    ('A'), 
    ('B'), 
    ('C') 
; 
select * from @Table1 T cross apply (select * from @Table2)TT 

ORDER BY t.X