首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写单个查询,而不是在oracle中使用循环?

如何编写单个查询,而不是在oracle中使用循环?
EN

Stack Overflow用户
提问于 2013-11-08 06:26:01
回答 1查看 100关注 0票数 0

我想编写一个基于以下条件的查询。在这方面你能帮帮我吗?

RecordID MergeRecordID Status StatusTime 3700432 289015开具发票25-5月-09 3700433 289015发票25-5月-09 3700434 289015发票08-12月09 3700435 289015错误08-12月

我有一个名为billingValues_tbl的表,其中RecordID是主键。请注意,MergeRecordID包含多个记录ID。

步骤1:我想基于MergeRecordID进行排序。在上面的例子中,我们将得到4条记录。

Step2:所有记录都应该具有Invoiced状态。如果列Stattus中的值不是“发票”,我应该跳过合并,即我不应该考虑这一记录。然后,我将去另一个合并/记录组合。我已经写了如下所示的查询,但它没有给我想要的结果。

代码语言:javascript
复制
 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;

有人能尽快帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-08 07:34:41

对我来说,虽然在这个场景中没有必要,但您似乎两次选择了表。

如果您只想拥有状态等于发票或取消状态的所有记录,则要比一个简单的

代码语言:javascript
复制
 SELECT RECORDID,MERGERECORDID,STATUS,STATUSTIME
   from BILLINGVALUES_TBL
  where STATUS IN ('Invoiced', 'Cancelled')

应该这么做。

否则,不仅要检查内部选择中的状态,而且要检查周围选择中的状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19852869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档