2016-08-04 35 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