我需要你的帮助来解决我面临的问题..我正在使用CASE函数并通过在“END”之后添加“AS'RESULT'”来对其结果进行别名化。
虽然查询似乎正在运行,但我仍然通过phpmyadmin收到以下警告:
无法识别的关键字(靠近AS)
意外的令牌(靠近'RESULT')
我不知道为什么我会这样......我很感激你的帮助以突出我的错误; - )
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
)
答案 0 :(得分:1)
您是否尝试删除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"