【发布时间】:2019-10-04 10:46:16
【问题描述】:
当我执行 partition_date = 2019-12-11 和 partition_date = 2019-07-06 的代码时,我收到一条错误消息,提示“子查询返回多于一行”。对于其他情况,它可以工作
select case when my_count <=1 AND status_ = 'END' then 0
when my_count >1 AND status_ IN ('END', 'RUNNING', 'START', 'ERR') THEN 1
ELSE -1
end AS W
INTO return_val
from (select
(SELECT count(DISTINCT(status)) FROM my_table
WHERE my_table.HIVE = 'hive1'
AND EXTRACT(MONTH FROM PARTITION_DATE) = EXTRACT(MONTH FROM TO_DATE('20191212', 'YYYY-MM-DD'))
AND EXTRACT(YEAR FROM PARTITION_DATE) = EXTRACT(YEAR FROM TO_DATE('20191212', 'YYYY-MM-DD'))
) my_count,
(SELECT DISTINCT(status) AS status_ FROM my_table
my_table.HIVE = 'hive1'
AND EXTRACT(MONTH FROM PARTITION_DATE) = EXTRACT(MONTH FROM TO_DATE('20191212', 'YYYY-MM-DD'))
AND EXTRACT(YEAR FROM PARTITION_DATE) = EXTRACT(YEAR FROM TO_DATE('20191212', 'YYYY-MM-DD'))
)status_
FROM dual
)x ;
RETURN(return_val);
my_table 就像
STATUS |HIVE |PARTITION_DATE |
-------|-----|-------------------
END |hive1|2019-12-11 00:00:00|
START |hive1|2019-12-12 00:00:00|
NA |hive1|2019-12-13 00:00:00|
END |hive1|2019-09-12 00:00:00|
END |hive1|2019-09-13 00:00:00|
END |hive1|2019-09-14 00:00:00|
ERR |hive1|2019-08-06 00:00:00|
ERR |hive1|2019-07-06 00:00:00|
START |hive1|2019-07-07 00:00:00|
RUNNING|hive1|2019-07-08 00:00:00|
END |hive1|2019-07-09 00:00:00|
【问题讨论】:
标签: oracle plsqldeveloper