gpt4 book ai didi

mysql - 在 Select 语句中使用 CASE

转载 作者:行者123 更新时间:2023-11-29 08:20:03 24 4
gpt4 key购买 nike

我希望下面的查询根据日期范围命名案例列 - 但是所有查询都默认为错误 - 我错过了什么?自从我在 mySQL 工作以来已经有一段时间了。我正在尝试根据逾期间隔(今天、明天、30 天、60 天、90 天)进行分组。

    SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)AS rDate,

CURDATE()AS rDate,DATE_ADD(CURDATE(), INTERVAL 1 DAY)AS rDate,

DATE_ADD(CURDATE(), INTERVAL 7 DAY)AS rDate,

DATE_ADD(CURDATE(), INTERVAL 14 DAY)AS rDate,

DATE_ADD(CURDATE(), INTERVAL 30 DAY)AS rDate,

DATE_ADD(CURDATE(), INTERVAL 60 DAY)AS rDate,

DATE_ADD(CURDATE(), INTERVAL 90 DAY)AS rDate,

CASE a.nextDueDate

WHEN a.nextDueDate < CURDATE() THEN 'Overdue'

WHEN a.nextDueDate > CURDATE() AND a.nextDueDate < (DATE_ADD(CURDATE(), INTERVAL 7
DAY))THEN '7 Days'

WHEN a.nextDueDate > CURDATE() AND a.nextDueDate < (DATE_ADD(CURDATE(), INTERVAL
14 DAY))THEN '15 Days'

WHEN a.nextDueDate > CURDATE() AND a.nextDueDate < (DATE_ADD(CURDATE(), INTERVAL 30 DAY))THEN '30 Days'

WHEN a.nextDueDate > CURDATE() AND a.nextDueDate < (DATE_ADD(CURDATE(), INTERVAL 60 DAY))THEN '60 Days'

WHEN a.nextDueDate > CURDATE() AND a.nextDueDate < (DATE_ADD(CURDATE(), INTERVAL 90 DAY))THEN '90 Days'

ELSE 'Error'

END,

g.groupId,g.name AS groupName,l.logId,l.name AS logName, i.itemID,

i.name AS itemName, le.userName,completed, i.optimalMin,i.optimalMax ,le.value,

u.name AS unitDescription,

g1.parentId AS parentId1, g1.name AS group1Name,g2.parentId AS parentId2, g2.name
AS group2Name,

g3.parentId AS parentId3, g3.name AS group3Name,

a.name AS activityName,scheduleType,scheduleInterval,a.details,nextDueDate

FROM logExceptions le

INNER JOIN logs l ON l.logID = le.logID

INNER JOIN groups g ON g.groupId = l.groupId

INNER JOIN items i ON le.itemId = i.itemId

INNER JOIN activities a ON l.logId = a.logId

LEFT JOIN units u ON i.unitId = u.unitId

LEFT JOIN groups g1 ON g.parentId = g1.groupId

LEFT JOIN groups g2 ON g1.parentId = g2.groupId

LEFT JOIN groups g3 ON g2.parentId = g3.groupId

WHERE nextDueDate IS NOT NULL

最佳答案

删除a.nextDueDateCASE之后关键字。

CASE表达式有两种形式:

CASE <expression>
WHEN <test-value1> THEN <result-value1>
WHEN <test-value2> THEN <result-value2>
...
ELSE <else-value>
END

在这种形式中,<expression>的值与每个 <test-valueN> 进行比较,当匹配时,对应的<result-valueN>被返回。如果没有匹配,则 <else-value>被返回。这种形式类似于 switchcase其他编程语言中的语句。

另一种形式是:

CASE WHEN <test-expression1> THEN <result-value1>
WHEN <test-expression2> THEN <result-value2>
...
ELSE <else-value>
END

在这种情况下,每个<test-expressionN>被评估,并且如果当其中一个为真时,则相应的 <result-valueN>被返回。如果没有一个为真,则 <else-value>被返回。这类似于 if/then/elseif/else其他编程语言。

由于您使用的是后一种类型 CASE ,在 CASE 之后不应该有表达式.

关于mysql - 在 Select 语句中使用 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19650088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com