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 条记录。

Step2:所有记录都应该有 Status Invoiced。如果 Stattus 列中的值不是“已开票”,我应该跳过该合并记录 ID,即我不应该考虑此记录。然后我会去另一个 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

对我来说,看起来您选择了两次表格,尽管在这种情况下没有必要。

如果您只想拥有状态等于已开票或已取消的所有记录,而不是简单的

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

应该这样做。

否则,尝试不仅在内部选择中检查状态,还要在周围选择中检查它。

于 2013-11-08T07:34:41.930 回答