0

以下に示すように、いくつかの条件に基づいてクエリを書きたいと思います。この点で私を助けていただけますか?

RecordID          MergeRecordID   Status          StatusTime
3700432           289015          Invoiced        25-May-09
3700433           289015          Invoiced        25-May-09
3700434           289015          Invoiced        08-Dec-09
3700435           289015          Error           08-Dec-09

billingValues_tblRecordID が主キーであるというテーブルがあります。MergeRecordID には複数のレコード ID が含まれていることに注意してください。

ステップ 1: MergeRecordID に基づいて並べ替えたい。上記の例では、4 つのレコードを取得します。

ステップ 2: すべてのレコードに Status が必要Invoicedです。列 Stattus の値が「Invoiced」以外の場合、その mergerecordid をスキップする必要があります。つまり、このレコードを考慮に入れるべきではありません。次に、別の mergerecordid/recordids の組み合わせに進みます。以下に示すようにクエリを作成しましたが、望ましい結果が得られません。

 SELECT RECORDID,MERGERECORDID,STATUS,STATUSTIME

 FROM BE242.BILLINGVALUES_TBL BV1

 WHERE BV1.MERGERECORDID IN ( SELECT BV2.MERGERECORDID

                                  FROM BILLINGVALUES_TBL BV2

                                  WHERE BV2.RECORDID = BV1.RECORDID

                                    AND BV2.MERGERECORDID = BV1.MERGERECORDID

                                    AND BV2.STATUS IN ('Invoiced', 'Cancelled') )

 ORDER BY BV1.MERGERECORDID  DESC;

できるだけ早く私を助けてください。

4

1 に答える 1

0

私にとっては、このシナリオでは必要ありませんが、テーブルを 2 回選択しているように見えます。

ステータスが Invoiced または Cancelled のすべてのレコードが必要な場合は、単純な

 SELECT RECORDID,MERGERECORDID,STATUS,STATUSTIME
   from BILLINGVALUES_TBL
  where STATUS IN ('Invoiced', 'Cancelled')

するべきです。

それ以外の場合は、内側の選択だけでなく、周囲の選択でもステータスを確認してください。

于 2013-11-08T07:34:41.930 に答える