Oracle Case语句错误

时间:2012-10-08 12:45:48

标签: sql oracle

我正在使用下面的SQL语句,在尝试执行时,它给出了错误

0ra:00907 Missing right paranthesis

错误。以下是我的询问。

SELECT DISTINCT b.PROT_NBR, mc.ISO_3_CHAR_CNTRY_CD, c.SITE_NUM, Min(d.X_ATTRIB_118)
   , CASE 
      WHEN d.X_ATTRIB_130 IS NULL
         THEN Min(d.ATTRIB_31)
      ELSE CASE 
            WHEN (
                  d.X_ATTRIB_130 IS NOT NULL
                  AND d.ATTRIB_31 IS NOT NULL
                  )
               THEN CASE 
                     WHEN To_Char(d.X_ATTRIB_130, ’mm / dd / yy’) > To_Char(d.ATTRIB_31, ’mm / dd / yy’)
                        THEN Max(d.X_ATTRIB_130)
                     ELSE Max(d.ATTRIB_31)
                     END
            ELSE NULLS
            END
      END Approval_Date
FROM CTMS_S_DS_PTCL_CNTRY a
   , CLINICAL_STUDY b
   , MDM_COUNTRY_MASTER mc
   , CTMS_S_DS_PTCL_SITE c
   , CTMS_S_DS_PTCL_REGLTRY d
WHERE a.DELETED_FLG = 'N'
   AND a.PTCL_STAT_CD IN ('Enrolling', 'Closed To Enrollment', 'Closed Follow Up'
      , 'In Analysis', 'Discontinued', 'Completed', 'In Development'
      , 'Open To Enrollment', 'Planning'
      )
   AND b.ods_src_sys_id = 13
   AND b.DEL_FLG = 0
   AND c.DELETED_FLG = 'N'
   AND c.SITE_NUM IS NOT NULL
   AND c.Status_CD IN (
      'Enrollment Open'
      , 'Intrested'
      , 'Regulatory Green Light'
      , 'Essential Documents in place'
      , 'Approved for SSV'
      , 'Intrested'
      , 'Contacted'
      , 'Pre Selected'
      , 'Contacted'
      , 'Selected'
      , 'Ready For Initiation'
      , 'Enrollment Closed'
      , 'Initiated'
      , 'Enrollment On-Hold'
      , 'Targeted'
      , 'Closed'
      )
   AND d.X_QNT_SUB_REQ IN ("'Ethics Central/IRB Submission'")
   AND d.DELETED_FLG = 'N'
   AND b.PROJ_ID = a.PAR_PTCL_ID
   AND mc.CNTRY_NM = a.REGION_CD
   AND a.SBL_ROW_ID = C.PTCL_RGN_ID
   AND c.SBL_ROW_ID = d.CL_PTCL_ST_ID
GROUP BY b.PROT_NBR
   , mc.ISO_3_CHAR_CNTRY_CD
   , c.SITE_NUM
   , d.X_ATTRIB_130
   , d.ATTRIB_31;

请告诉我这是什么问题。

1 个答案:

答案 0 :(得分:2)

我认为您的报价有问题。

对于行AND d.X_QNT_SUB_REQ IN ("'Ethics Central/IRB Submission'"),我会将其写为:

AND d.X_QNT_SUB_REQ IN ('Ethics Central/IRB Submission')

此外,对于行WHEN To_Char(d.X_ATTRIB_130, ’mm / dd / yy’) > To_Char(d.ATTRIB_31, ’mm / dd / yy’),我会写:

WHEN To_Char(d.X_ATTRIB_130, 'mm/dd/yy') > To_Char(d.ATTRIB_31, 'mm/dd/yy')

另外,您应该使用NULL而不是NULLS,因为这不会做任何事情