несоответствующий ввод '(' ожидание <EOF>(строка 3, позиция 28) - PullRequest
0 голосов
/ 11 января 2020

Мой код выглядит следующим образом, я не знаю, почему он вызывает ошибку, ошибка в строке 3 после случая, когда, Кто-нибудь может помочь в этом? спасибо

SELECT
  CASE
    WHEN
      (
        CASE
          WHEN
            (
              ltrim(rtrim(status)) = 'CANCELLED' 
              AND ltrim(rtrim(COALESCE(iscancelledwithte, - ))) = '0'
            )
          THEN
            CASE
              WHEN
                (
                  mincancellationdate IS NULL
                )
              THEN
                CASE
                  WHEN
                    (
                      lastupdatedts IS NULL
                    )
                  THEN
                    '9999-12-31' 
                  ELSE
                    lastupdatedts 
                END
                ELSE
                  mincancellationdate 
            END
            ELSE
              CASE
                WHEN
                  (
                    approvedforbillingts IS NULL
                  )
                THEN
                  '9999-12-31' 
                ELSE
                  approvedforbillingts 
              END
        END
      )
       = '9999-12-31' 
    THEN
      status 
    ELSE
      'Closed' 
  END
  AS casestatusname 
FROM
  tblrequesttemp AS tblrequests

1 Ответ

0 голосов
/ 11 января 2020

Я вставил ваш запрос sql в SQL Проверка синтаксиса (https://www.eversql.com/sql-syntax-check-validator/), и он возвращает ошибку в вашей функции coalesce. Я полагаю, вы забыли кавычки вокруг персонажа шины.

Есть фиксированный SQL Запрос:

SELECT 
       CASE 
              WHEN ( 
                            CASE 
                                   WHEN (Ltrim(Rtrim(status)) = 'CANCELLED' AND ltrim(rtrim(coalesce(iscancelledwithte, '-'))) = '0') THEN 
                                          CASE 
                                                 WHEN (mincancellationdate IS NULL) THEN 
                                                        CASE 
                                                               WHEN (lastupdatedts IS NULL) THEN '9999-12-31' 
                                                               ELSE lastupdatedts 
                                                        end 
                                                 ELSE mincancellationdate 
                                          end 
                                   ELSE 
                                          CASE 
                                                 WHEN (approvedforbillingts IS NULL) THEN '9999-12-31' 
                                                 ELSE approvedforbillingts 
                                          end 
                            end) = '9999-12-31' THEN status 
              ELSE 'Closed' 
       end
AS casestatusname 
FROM tblrequesttemp AS tblrequests
...