oracle - 使用Max时oracle缺少表达式
问题描述
该项目需要收集过去 27 个月的数据,这将满足 2 个条件:
3个月(今年)+12年(上年)+12年(上年)1个月(今年)+12年(上年)+12年(上年)+2(上3年)或2月(今年)+ 12 年(上一年)+ 12 年(上一年)+ 1(上一年) 我需要在数据中添加一个条件/列,称为“日期条件”,对于条件 1,仅显示今年和上一年的数据(3 + 12 + 12)个月,对于条件2,显示今年和上一年以及上一年的数据(1/2 + 12 + 12 + 1/2)个月。
这个条件以前是在tableau中作为计算字段的,但是性能太慢了,所以我想在数据级别进行过滤。我编写了如下代码,但收到错误 936:缺少表达式
SELECT * FROM DDS_MQC_QAP_VW
WHERE (INSP_YEAR IS NULL
AND INSP_RESULT_REASON_DESC NOT LIKE '%On hold%'
AND INSP_RESULT_REASON_DESC NOT LIKE '%Aborted%'
)
OR
(
(
INSPECTION_DATE BETWEEN
ADD_MONTHS(LAST_DAY(
ADD_MONTHS( (SELECT MAX(INSPECTION_DATE) AS MAX_DATE FROM DDS_MQC_QAP_VW) -26,))+1,-1)
AND (SELECT MAX(INSPECTION_DATE) AS MAX_DATE FROM DDS_MQC_QAP_VW)
)
AND INSP_RESULT_REASON_DESC NOT LIKE '%On hold%'
AND INSP_RESULT_REASON_DESC NOT LIKE '%Aborted%'
)
解决方案
把逗号移到另一个地方:
ADD_MONTHS( (SELECT MAX(INSPECTION_DATE) AS MAX_DATE FROM DDS_MQC_QAP_VW) -26,))+1,-1)
^
here
ADD_MONTHS( (SELECT MAX(INSPECTION_DATE) AS MAX_DATE FROM DDS_MQC_QAP_VW), -26))+1,-1)