【问题标题】:CASE WITH MULTIPLE SELECT STATEMENTS具有多个 SELECT 语句的案例
【发布时间】:2021-03-24 05:06:14
【问题描述】:

我试图在一个案例中放置一个 select 语句,但我无法正确放置它。

第一个case语句很好,但第二个是问题。

有人可以用正确的语法指导我吗,

select u.unit_id,
       u.order_code,
       u.order_item,
       u.roll_sheet,
       u.date_wound,
       u.date_shipped,
       u.unit_status,
       u.warehouse_code,
       (case
         when u.unit_id_turnup is not null then
          (select u1.onput_id
             from unit u1
            where u.unit_id_turnup = u1.unit_id)
         else
          u.onput_id
       end) "onput id",
       
       (case
         when u.unit_id_turnup is not null then
          (select CASE WHEN U1.UNIT_ID_TURNUP IS NOT NULL
             from unit u1 then (select u3.onput_id
                                  from unit u3
                                 where u1.unit_id_turnup = u3.unit_id) else u1.onput_id)
         else
          u.onput_id
       end) "onput id2",
  from unit u

【问题讨论】:

  • 您的 case when 语句在您的第二个查询 (CASE WHEN {} ELSE {} END) 中格式错误,并且中间有一些 FROM。使用left join 可以更好地解决您的查询。
  • 你能不能指导一下,如何@jamieDrq
  • 样本数据、所需结果以及对您要实现的逻辑的解释都会有所帮助。另外,请解释您遇到的问题。

标签: sql oracle oracle11g oracle10g


【解决方案1】:

我可以推测你想要的代码是:

select . . . ,
       coalesce(u1.onput_id, u.onput_id) as onput_id,
       coalesce(u2.onput_id, u1.onput_id, u.onput_id) as onput_id2
from unit u left join
     unit u1
     on u.unit_id_turnup = u1.id left join
     unit u2
     on u1.unit_id_turnup = u2.id

没有样本数据和明确的解释,这真的只是一个猜测。但是,这似乎是您正在尝试的。

【讨论】:

  • 它按我的需要工作,非常感谢@Gordon Linoff
猜你喜欢
  • 2011-06-19
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多