2017-07-27 6 views
0

私はBIRTと一緒に仕事を始めましたが、なぜこれが起こっているのか分かりません。BIRTのSelect文は、MySQLワークベンチとは異なる(そして間違った)出力を与えます

私はBIRTホームページからMySQLワークベンチでサンプルデータを使用しています。 私がしたかったのは、どの顧客が最良のものであるかを示すグラフを表示して、私に最も多くの金を払ったことです。そのためには、顧客からのすべての支払いを一緒に追加する必要があります。これはMySQLワークベンチでうまく動作しますが、BIRTプラグインは間違った結果を返します。

私はWorkbenchとBIRTで同じSQL文を持っていますが、その解決策は異なります。 enter image description here

そしてBIRTは間違っている、この結果を与える: enter image description here

BIRTはないように思え、私は(!正しいです)、結果としてこれを取得するワークベンチで

Select * from(
select sum(CLASSICMODELS.PAYMENTS.AMOUNT) as TOTAL_AMOUNT, CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER, 
CLASSICMODELS.CUSTOMERS.CUSTOMERNAME 
from CLASSICMODELS.PAYMENTS, CLASSICMODELS.CUSTOMERS 
where CLASSICMODELS.payments.customerNumber = CLASSICMODELS.customers.customerNumber 
group by CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER, CLASSICMODELS.CUSTOMERS.CUSTOMERNAME 
) as inner_table 
where TOTAL_AMOUNT > 75000 

"sum()"関数を適用するときに値を正しく追加しないでください。誰かがこれについて説明することができますか?たぶん私は私のソリューションに間違ったアプローチをとっているでしょうか?再び - 私は各顧客(彼の番号または名前によって識別される)を見ることができるグラフと、彼が今までに行ったすべての支払いの合計金額を表示したいと思います。

+0

結果が異なる理由はわかりませんが、派生テーブルを使用する必要はありません。代わりに 'WHERE'の後に' HAVING TOTAL_AMOUNT> 75000'を実行するだけです。 – dnoeth

+0

Btw、ClassicModelsモデルの実際のデータを見ると、BIRTの結果は正しいです。顧客112には3つの支払いがあります:14191.12 ,32641.98 ,33347.88 – dnoeth

+0

HAVINGキーワードを使用していただきありがとうございます。私はまだSQLにとって非常に新しいです。 – Vulkanos

答えて

0

正しいデータソースに接続していないことがわかりました。 デフォルトでは、データソースは、私がMySQL-Workbenchで設定したものであると考えたorg.eclipse.birt.report.data.oda.sampledb.driverのsampledbに接続しますが、そうではありません。

私はmysql.jdbc.driverを設定し、デフォルトデータベースの代わりにローカルデータベースに接続しました。これは現在動作しており、期待される結果が得られます。

関連する問題