我想基于某些条件编写查询,如下所示。在这方面你能帮帮我吗?
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_tbl
的表,其中RecordID是主键。请注意,MergeRecordID包含多个记录ID。
第1步:我想基于MergeRecordID进行排序。在上面的例子中,我们将得到4条记录。
步骤2:所有记录都应具有状态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;
请有人尽快帮助我吗?
答案 0 :(得分:0)
对我来说,看起来你选择了两次表,尽管在这种情况下没有必要。
如果您只想拥有Status等于Invoiced或Cancelled的所有记录,而不是简单的
SELECT RECORDID,MERGERECORDID,STATUS,STATUSTIME
from BILLINGVALUES_TBL
where STATUS IN ('Invoiced', 'Cancelled')
应该这样做。
否则,尝试不仅在内部选择中检查状态,还要在周围的选择中检查它。