使用条件SQL查询进行数据检索

时间:2015-02-20 15:16:53

标签: sql oracle date conditional

实现条件数据检索的最佳方法是什么(在Oracle中)?

场景:实体可以拥有delivery datesconfirmed delivery dates

数据检索应该

  1. 如果将来(或今天)的任何日期仍然存在,请返回下一个交货日期。
  2. 如果所有日期都已过去,则返回最年轻的交货日期。
  3. 进一步限制:

    • 如果同时设置了交货日期和确认交货日期,则返回确认的交货日期。

    • 每个实体都有一个标记important,这将使其交付日期变得重要(相关,如果两个实体具有相同的交付日期并进行比较)。

    交货日期和确认的交货日期存储在不同的列中。

    问题:根据(1)和(2)检索交货日期的最佳方法是什么?

    我想知道,如果可以在纯SQL中完成(特别是IF..ELSE部分)。我想查询单个实体的日期,但我还想返回按日期排序的实体列表。我是否会更好地编写存储过程?

1 个答案:

答案 0 :(得分:0)

您可以使用案例陈述。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm

语法:

CASE column_value_to_check_value 
    WHEN condition THEN condition_match_value
    WHEN another_condition THEN condition_not_match_value
    ELSE default_value 
END