Выбор не действителен в этой позиции для этой версии сервера, ожидая: '(', WITH - PullRequest
0 голосов
/ 27 мая 2019

Я получаю синтаксическую ошибку в своем операторе SQL, и я не знаю, где это неправильно. Я буду очень признателен, если кто-нибудь здесь сможет пролить свет. Заранее спасибо!

SELECT YEAR(co.CO_APPLIED_DT) as SCO_YEAR
      ,MONTH(co.CO_APPLIED_DT) as SCO_MONTH_ID
      ,co.CO_OWNER_ACCNID as SCO_APPL_ACCNID
      ,co.CO_APPROVER_ACCNID as SCO_APPR_ACCNID
      ,co.CO_ISSUE_CTRY_CD as SCO_ISSUE_CTRY_CD
      ,co.CO_FINALDEST_CTRY_CD as SCO_DEST_CTRY_CD
      ,'99999999' AS SCO_HS_CHAP_CD
      ,SUM(CASE
             WHEN co.CO_STATUS IN ('A','P', 'T', 'E', 'C', 'F', 'L') THEN 1
             ELSE 0
           END) AS SCO_APPROVED_CT
      ,SUM(CASE
             WHEN co.CO_STATUS = 'U' THEN 1
             ELSE 0
           END) AS SCO_CANCELLED_CT
      ,SUM(CASE
             WHEN co.CO_STATUS = 'R' THEN 1
             ELSE 0
           END) AS SCO_REJECTED_CT
      ,0 AS SCO_HS_CHAP_CT
  FROM TDocCo co
 WHERE co.CO_STATUS NOT IN ('N', 'D')
   AND co.CO_APPLIED_DT <= :date
   AND YEAR(co.CO_APPLIED_DT) = :year
   AND MONTH(co.CO_APPLID_DT) = :month
 GROUP BY co.CO_APPROVER_ACCNID
         ,co.CO_OWNER_ACCNID
         ,co.CO_ISSUE_CTRY_CD
         ,co.CO_FINALDEST_CTRY_CD
         ,YEAR(co.CO_APPLIED_DT)
         ,MONTH(co.CO_APPLIED_DT);

Я получаю сообщение об ошибке, как показано выше.

1 Ответ

1 голос
/ 27 мая 2019

Это мои 2 цента: в моем локальном БД я написал ваш запрос, меняя только параметры: date: year и: month со значениями today.Кажется правильным!

 SELECT 
    getDate() as CO_APPLIED_DT,
     23 as CO_OWNER_ACCNID,
     42 as CO_APPROVER_ACCNID,
    'England' as CO_ISSUE_CTRY_CD,
    'Poland' as CO_FINALDEST_CTRY_CD,
    'A' as CO_STATUS 
   INTO TDocCo

SELECT  YEAR(co.CO_APPLIED_DT) as SCO_YEAR, 
    MONTH(co.CO_APPLIED_DT) as SCO_MONTH_ID, 
    co.CO_OWNER_ACCNID as SCO_APPL_ACCNID, 
    co.CO_APPROVER_ACCNID as SCO_APPR_ACCNID, 
    co.CO_ISSUE_CTRY_CD as SCO_ISSUE_CTRY_CD, 
    co.CO_FINALDEST_CTRY_CD as SCO_DEST_CTRY_CD, 
    '99999999' AS SCO_HS_CHAP_CD, 
    SUM(CASE WHEN co.CO_STATUS IN ('A','P', 'T', 'E', 'C', 'F', 'L') THEN 1 ELSE 0 END) AS SCO_APPROVED_CT,  
    SUM(CASE WHEN co.CO_STATUS = 'U' THEN 1 ELSE 0 END) AS SCO_CANCELLED_CT, 
    SUM(CASE WHEN co.CO_STATUS = 'R' THEN 1 ELSE 0 END) AS SCO_REJECTED_CT,
    0 AS SCO_HS_CHAP_CT 
  FROM TDocCo co 
  WHERE co.CO_STATUS NOT IN ('N', 'D')
     AND co.CO_APPLIED_DT <=   getDate()                -- modified 
     AND YEAR(co.CO_APPLIED_DT) =  year (getDate())     -- modified 
     AND MONTH(co.CO_APPLIED_DT) =  month (getDate())   -- modified 
  GROUP BY co.CO_APPROVER_ACCNID, co.CO_OWNER_ACCNID, co.CO_ISSUE_CTRY_CD, co.CO_FINALDEST_CTRY_CD, YEAR(co.CO_APPLIED_DT), MONTH(co.CO_APPLIED_DT);

 DROP TABLE  TDocCo
...