Псевдоним оператора CASE - PullRequest
0 голосов
/ 12 июня 2018

Мне понадобится ваша помощь, чтобы решить проблему, с которой я столкнулся .. Я использую функцию CASE и налагаю псевдоним на ее результат, добавляя "AS 'RESULT" "после его" END ".

Событиехотя кажется, что запрос выполняется, я все еще получаю следующие предупреждения через phpmyadmin:

нераспознанное ключевое слово (рядом с AS)

неожиданный токен (рядом с ')РЕЗУЛЬТАТ ')

Я понятия не имею, почему я получаю это ... Буду признателен за вашу помощь, чтобы подчеркнуть мою ошибку; -)

            SELECT
            app_fd_List_of_components.c_component,
            app_fd_List_of_orders.c_package,
            app_fd_List_of_orders.c_status,
            app_fd_List_of_orders.dateCreated,
            app_fd_List_of_orders.c_orderId,
            app_fd_List_of_orders.Id,
            temptablename.datetime AS Int_Date,
            temptablename2.datetime AS Prdw3_Date,
            @counterStatus := IF(
            app_fd_List_of_orders.c_status <> 'Deployment completed',
            IF(
            temptablename.datetime IS NOT NULL,
            'Counting',
            'Initializing'
            ),
            'Complete'
            ) AS 'Counter_status',
            @counter := IF(
            app_fd_List_of_orders.c_status <> 'Deployment completed',
            IF(
            temptablename.datetime IS NOT NULL,
            (
            35 - DATEDIFF(
            CURRENT_DATE(), temptablename.datetime)
            ),
            'n/a'
            ),
            DATEDIFF(
            temptablename2.datetime,
            temptablename.datetime
            )
            ) AS 'Counter',


            CASE (WHEN(
            (@counterStatus = 'Counting') AND(@counter < 0)
            ) THEN "black" WHEN(
            (@counterStatus = 'Counting') AND(@counter > 5)
            ) THEN "green" WHEN(
            (@counterStatus = 'Counting') AND(-1 < @counter < 5)
            ) THEN "orange" WHEN(
            (@counterStatus = 'Complete') AND(@counter > 35)
            ) THEN "black" WHEN(
            (@counterStatus = 'Complete') AND(@counter < 35)
            ) THEN "green" ELSE "n/a")
            END AS 'RESULT'


            FROM
            app_fd_List_of_orders
            JOIN app_fd_List_of_components ON 
            app_fd_List_of_orders.c_component = app_fd_list_of_components.id
            LEFT JOIN(
            SELECT app_form_data_audit_trail.datetime,
            app_form_data_audit_trail.data
            FROM
            app_form_data_audit_trail
            WHERE
            SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            app_form_data_audit_trail.data,
            '"opdetails":"',
            -1
            ),
            '"',
            1
            ) = 'int'
            ) AS temptablename
            ON
            app_fd_list_of_orders.c_orderid = SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            temptablename.data,
            '"orderId":"',
            -1
            ),
            '"',
            1
            )
            LEFT JOIN(
            SELECT app_form_data_audit_trail.datetime,
            app_form_data_audit_trail.data
            FROM
            app_form_data_audit_trail
            WHERE
            SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            app_form_data_audit_trail.data,
            '"opdetails":"',
            -1
            ),
            '"',
            1
            ) = 'prdw3'
            ) AS temptablename2
            ON
            app_fd_list_of_orders.c_orderid = SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            temptablename2.data,
            '"orderId":"',
            -1
            ),
            '"',
            1
            )

1 Ответ

0 голосов
/ 12 июня 2018

Вы пытались убрать скобки вокруг оператора CASE?

CASE
    WHEN @counterStatus = 'Counting' AND @counter < 0 THEN "black" 
    WHEN @counterStatus = 'Counting' AND @counter > 5 THEN "green" 
    WHEN @counterStatus = 'Counting' AND -1 < @counter < 5 THEN "orange" 
    WHEN @counterStatus = 'Complete' AND @counter > 35 THEN "black" 
    WHEN @counterStatus = 'Complete' AND @counter < 35 THEN "green" 
    ELSE "n/a"
 END AS 'RESULT'

РЕДАКТИРОВАТЬ: Я также не уверен, что это возможно:

WHEN @counterStatus = 'Counting' AND -1 < @counter < 5 THEN "orange"

Возможно, его нужно написатькак:

WHEN @counterStatus = 'Counting' AND -1 < @counter AND @counter < 5 THEN "orange" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...