2016-08-04 1 views
0

から3つのテーブルを結合するためにRとsqlquery関数でRODBCパッケージを使用すると、あなたは私がでRODBCパッケージからsqlQuery機能を使用してmaster tablex1と二つの他のテーブルx2と間left joinを作成することができる方法を理解するために私を助けることができますR.データベース

私のセットアップ私は成功した二つのテーブルに参加することができ、データベース接続後:私はこの試みて式に第三を持参しようとすると、

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

2番目の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