SQL - 使用Min字段来实现所需的结果

时间:2015-08-13 17:32:25

标签: oracle-sqldeveloper

想知道处理以下情况的最佳SQL:客户只想查看已被拒绝的发票。我开始只在STATUS_ID = 2时显示我,但后来意识到它已经付款,因为它被重新提交并被接受,因此无法正常工作。如果清单+订单代码为1,那么我不希望SQL返回任何记录的最佳处理方法是什么?如果清单+订单代码为1,您是否会执行最小状态ID?

供应商名称清单ORDER_CODE STATUS_ID 供应商12345 BHGSDKJF1234 RU07 2(发票下降) 供应商12345 BHGSDKJF1234 RU07 1(已付款)

1 个答案:

答案 0 :(得分:0)

在这种情况下,这个技巧对你有用,但它并不能解决一般情况(如果付费的STATUS_ID是3,所有可能的值都是0-5,会发生什么?)

你可以使用一般的SWICH-CASE子句,如果客户端有STATUS_ID = 1则给你一些(真),否则为0。然后,为每张发票选择MAX()。

您还可以考虑另一种可能适合您的设计: 添加time \ time-stamp列(为了您的目的,可以使用SYSDATE时间将记录的插入时间用于db)。 在您有时间列之后,您可以选择每个发票的最后一次STATUS_ID的列(获取具有最长时间的行中的STATUS_ID)。