2016-08-04 34 views
0

你能幫助我3個表,以瞭解如何我可以用sqlQuery功能從RODBC包創建和之間left join一個master tablex1和其他兩個表x2 R.在R和sqlquery函數使用RODBC包加入從數據庫

後,我建立數據庫連接我可以成功連接兩個表:

library RODBC 

dataframe <-sqlQuery(conn," 
SELECT 
sum(A1.revenue1), 
sum(A1.revenue2), 
sum(A1.revenue3), 
A2.SERVICE_TYPE_NAME 
FROM 
(FINANCE.x1 A1 LEFT JOIN CORE.x2 A2 
ON (A1.YEAR_NUM = A2.YEAR_NUM 
AND A1.SERVICE_TYPE_KEY = A2.SERVICE_TYPE_KEY) 
) 
WHERE A1.YEAR_NUM = '2015' 
AND A2.SERVICE_TYPE_KEY='2' 
GROUP BY A2.SERVICE_TYPE_NAME 
") 

,但我失敗了,當我嘗試將一個第三方程嘗試這樣的:

dataframe <-sqlQuery(conn," 
SELECT 
sum(A1.revenue1), 
sum(A1.revenue2), 
sum(A1.revenue3), 
A2.SERVICE_TYPE_NAME 
FROM 
(FINANCE.x1 A1 LEFT JOIN CORE.x2 A2 
ON (A1.YEAR_NUM = A2.YEAR_NUM 
AND A1.SERVICE_TYPE_KEY = A2.SERVICE_TYPE_KEY) 

FINANCE.x1 A1 LEFT JOIN BRAND.x3 
ON (A1.brand_ID=A3.brand_ID)) 
WHERE A1.YEAR_NUM = '2015' 
AND A2.SERVICE_TYPE_KEY='2' 
GROUP BY A2.SERVICE_TYPE_NAME 
") 
+1

這是一個純粹的SQL問題。如果連接之前曾經工作過一次,那麼當SQL被排序時,R就沒問題。 – NJBurgo

+0

您可能還想使用您正在使用的SQL版本進行標記。無論如何,我給了你一個下面的查詢應該工作。 –

+0

謝謝,這有幫助。當我連接到DB2並且RODBC包在這種情況下具有特定的語法時,我很掙扎。我也是剛開始使用SQL的新手。 –

回答

1

您的第二個SQL需要清理。在進行連接時,您只提到每個表格一次。試試這個:

SELECT SUM(A1.revenue1), 
     SUM(A1.revenue2), 
     SUM(A1.revenue3), 
     A2.SERVICE_TYPE_NAME 
FROM FINANCE.x1 A1 
LEFT JOIN CORE.x2 A2 
    ON A1.YEAR_NUM = A2.YEAR_NUM AND 
     A1.SERVICE_TYPE_KEY = A2.SERVICE_TYPE_KEY 
LEFT JOIN BRAND.x3 
    ON A1.brand_ID=A3.brand_ID 
WHERE A1.YEAR_NUM = '2015' AND 
     A2.SERVICE_TYPE_KEY = '2' 
GROUP BY A2.SERVICE_TYPE_NAME