【问题标题】:IN clause param to subquery子查询的 IN 子句参数
【发布时间】:2018-10-11 19:09:40
【问题描述】:

以下查询为我提供了特定日期的最新日期/时间。

select * 
from calendar c 
where c.date= to_date('2018/03/09','yyyy/mm/dd') 
 and c.date >= all(select date from calendar c2 where c.date = c2.date)

如何将上述查询用作子查询并将 in 子句作为参数传递给以下查询?

select * from (

/*above query inside and iterate over in param*/

)abc where abc.date in (to_date('2018/03/09','yyyy/mm/dd') ,to_date('2018/03/10','yyyy/mm/dd') )

【问题讨论】:

    标签: sql oracle subquery


    【解决方案1】:

    我不知道我是否理解正确。这是你想做的吗?

    SELECT * FROM (
        SELECT * 
        FROM calendar c 
        WHERE c.d_date= to_date('2018/03/09','yyyy/mm/dd') 
                AND c.d_date >= all(SELECT d_date FROM calendar c2 WHERE c.d_date = c2.d_date)
    )abc WHERE abc.d_date IN (to_date('2018/03/09','yyyy/mm/dd') ,to_date('2018/03/10','yyyy/mm/dd') );
    

    我将日期列的名称改为d_date,因为它是保留字。

    【讨论】:

      【解决方案2】:
      select * 
      from calendar c 
      where c.date in (to_date('2018/03/09','yyyy/mm/dd') ,to_date('2018/03/10','yyyy/mm/dd') )
       and c.date >= all(select date from calendar c2 where c.date = c2.date)
      

      试试这个。

      【讨论】:

        【解决方案3】:

        对不起,我的意思是使用外部查询参数化子查询,并且能够编写一些类似的东西来达到目的

        select * 
        from calendar c 
        where c.date >= all(select date from calendar c2 where c.date = c2.date) 
        and c.date in (to_date('2018/03/09','yyyy/mm/dd'),to_date('2018/03/10','yyyy/mm/dd') )
        

        【讨论】:

          猜你喜欢
          • 2010-12-17
          • 1970-01-01
          • 2012-04-24
          • 2023-03-19
          • 2017-01-12
          • 2015-04-02
          • 2010-10-23
          • 1970-01-01
          • 2010-10-13
          相关资源
          最近更新 更多