1

このクエリ:

SELECT
    DENSE_RANK() OVER (PARTITION BY UPPER(ANUMID), UPPER(PRODNUMID) ORDER BY DATE_ADDED ASC) AS DRANK
,   ANUMID
,   PRODNUMID
,   STATUS_FDATE
,   STATUS_XDATE
,   ROWSTATUS
FROM
    AGCOMN 

このクエリは、ANUMID、PRODNUMID の各グループの行を DATE_ADDED で 1 から x までランク付けします。後続のクエリでは、DRANK=1 が追加された最新の行を取得します。

このクエリは、ORACLE SQL Developer、ローカル マシンの SSIS 環境、および TEST サーバーの SSIS OLE DB ソース プレビューで機能しますが、パッケージを実行すると機能しません。

エラー:

[OLE DB ソース 1 [677]] エラー: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E14。OLE DB レコードが利用可能です。ソース: "OraOLEDB" Hresult: 0x80040E14 説明: "ORA-00936: 式がありません"。

環境:

  • ローカル - Windows XP、SQL BIDS 2008

  • テスト - Windows7、SQL/BIDS 2008

それ以来、クエリを書き直して単純化し、データを一時テーブルに取得してから、SQL サーバーを使用してランク付けし、レコード数を削減しました。

そもそもSQLが機能しない根本原因を見つけるためのアイデアはありますか? また、プレビューは機能するのに、パッケージを実行すると機能しないのはなぜですか?

4

1 に答える 1

2

私は問題を発見しました。SQL の途中に二重ダッシュを使用した埋め込みコメントがありました。それらを削除すると、クエリが機能しました。この公開フォーラムに投稿するためにクエリを「クリーンアップ」したときに、元の投稿でそれらを削除しました。

これは、32 ビット モードと 64 ビット モードの両方に当てはまります。また、AS DRANK フレーズから AS を削除しましたが、この場合は違いはありませんでした。アイデアをありがとう。

于 2015-12-14T21:07:00.417 に答える