简体   繁体   English

在R和sqlQuery函数中使用RODBC包从数据库中联接3个表

[英]Using RODBC package in R and sqlQuery function to join 3 tables from a Database

can you help me to understand how i can create a left join between a master table x1 and two other tables x2 and x3 using the sqlQuery function from the RODBC package in R. 您能帮助我了解如何使用R中RODBC包中的sqlQuery函数在master table x1和两个其他表x2x3之间创建left join RODBC

After I setup the database connection I successfully can join two tables: 设置数据库连接后,我可以成功连接两个表:

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
")

but I fail when I try to bring a 3rd to the equation trying this: 但是当我尝试将等式带入方程式时,我失败了:

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
")

Your second SQL needs to be cleaned up. 您的第二条SQL需要清理。 You only mention each table once when doing a join. 进行联接时,每个表只提及一次。 Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM