私のアプリケーションでは、ISAの例外を表示するために使用される「毎日の例外レポート」というレポートがあります。この表では、重複したエントリ(レポート内のまったく同じ2つの行)が表示されます。結果セットをテーブルに挿入する際に重複します
技術的な詳細
table
ExceptionFirstReported
という重複したエントリを持つデータで、例外レポートが表示されます。 ExceptionFirstReported
にinsert
行に用いInsert Statement
はstored procedure
usp_Refresh_Daily_Exception_Report
です。
INSERT INTO ExceptionFirstReported(
InvestorReference, ExceptionReason, First_Reported_Date, RelativeRef)
SELECT InvestorReference, ExceptionReason, Dateupdated, RelatedInvRef FROM (
SELECT * FROM DailyExceptionReport As DER
WHERE NOT EXISTS
(SELECT ExcepRptd.InvestorReference
FROM ExceptionFirstReported AS ExcepRptd
WHERE DER.InvestorReference = ExcepRptd.InvestorReference
AND DER.ExceptionReason = ExcepRptd.ExceptionReason
AND DER.RelatedInvRef = ExcepRptd.RelativeRef))
AS CI
JOIN currentISAs AN CI.InvestorReference = Status_Inv_Ref
我々は同じInvestorReference
、ExceptionReason
と `RelatedInvRefを持って何の行は存在しませんように、2つの異なるインスタンスでこの文を使用して、重複エントリが存在しないことができると思います。
は、しかし、我々は、重複enteriesを持っています。これは、table
に行を挿入するために使用される唯一のinsert
ステートメントです。 テーブルDailyExceptionReport
とcurrentISAs
には重複が含まれていませんでした。
上記のINSERTクエリは、「usp_refresh_dailyreport」店舗手順で呼び出され、SPはサイクルで一回だけ実行されています。 9:54 @戻り値= 1
その後、
InvestorReference ExceptionReason First_reported_dt
Recent_reported_dt relativeref report_gen_date
442643169642ナシバランス2012-04-11場合
@returnvalueは= Execは
をusp_refresh_dailyreport :00
2012-05-04 23:58:00 NULL
442643169642>ワンISA 2012-04-21 6時30分00秒2012年4月23日23時58分00秒452750423823 NULL
442643169642>ワンISA 2012-04-21 6時30分00秒
2012-04-23 23:58:00 452750423823 NULL
上記のExceptionFirstReportedテーブルのデータの最後の2つの行は同じで、同じrelativeref(nullではない)を含んでいます。 'relativeref'がnullフィールドではないことをお詫びしますが、最初の行のように空のデータを保持する可能性があります。
buddy.Theの問題は、INSERTクエリが重複を挿入しようとする場合は、プライマリインデックスは、テーブルに追加して、プロセスはウィットエラー停止しますので、私は、テーブルにインデックスを追加することはできませんですthnk。私はウィットバンクのライブシステムに取り組んでいます。このレポートは毎日生成される必要があります。 – user1373129
@Angelo Neuschitzer thnk u ..スレッドをチェックしてみましょう.. – user1373129