MySQL查询未提供所需的输出

MySQL查询未提供所需的输出,mysql,Mysql,我有一个MySQL查询: SELECT DATE_FORMAT(pickupdatetime, '%m/%y') AS mmyy, SUM(CASE WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating') and (class = 'local') THEN quotedprice ELSE 0 END) AS potentiallocal, SUM(CASE WHEN (status = 'Closed' or 'Confi

我有一个MySQL查询:

SELECT DATE_FORMAT(pickupdatetime, '%m/%y') AS mmyy,
SUM(CASE WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating') and (class = 'local') THEN quotedprice ELSE 0 END) AS potentiallocal,
SUM(CASE WHEN (status = 'Closed' or 'Confirmed' or 'Open') and (class = 'local') THEN quotedprice ELSE 0 END) AS actuallocal,

SUM(CASE WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating') and (class = 'travel') THEN quotedprice ELSE 0 END) AS potentialtravel,
SUM(CASE WHEN (status = 'Closed' or 'Confirmed' or 'Open') and (class = 'travel') THEN quotedprice ELSE 0 END) AS actualtravel,

SUM(CASE WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating') and (class = 'suv') THEN quotedprice ELSE 0 END) AS potentialsuv,
SUM(CASE WHEN (status = 'Closed' or 'Confirmed' or 'Open') and (class = 'suv') THEN quotedprice ELSE 0 END) AS actualsuv,

SUM(CASE WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating') and (class = 'minivan') THEN quotedprice ELSE 0 END) AS potentialminivan,
SUM(CASE WHEN (status = 'Closed' or 'Confirmed' or 'Open') and (class = 'minivan') THEN quotedprice ELSE 0 END) AS actualminivan

FROM `reservations`
WHERE pickuploc = 'la'
GROUP BY DATE_FORMAT(pickupdatetime, '%m/%y'), YEAR(pickupdatetime)
ORDER BY YEAR(pickupdatetime), DATE_FORMAT(pickupdatetime, '%m/%y')

我想获得
状态
已取消
未确认
报价
的组合值,对于
本地
类通信,然后对于
状态
已关闭或
已确认
本地
类打开的组合值。我尝试对每一类(本地、旅行、suv、小型货车)再次执行此操作,但它没有给出正确的输出,我做错了什么?

所有表达式如下:

WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating')
WHEN (status = 'Canceled' or status = 'Unconfirmed' or status = 'Communicating')
是错误的,因为它们等同于:

WHEN (status = 'Canceled' or 0 or 0)
最后相当于:

WHEN (status = 'Canceled')
因为字符串
'unconfirm'
'communication'
是布尔表达式的操作数,所以它们被隐式转换为整数。
您应该做的是更改表达式,如:

WHEN (status = 'Canceled' or 'Unconfirmed' or 'Communicating')
WHEN (status = 'Canceled' or status = 'Unconfirmed' or status = 'Communicating')
或:


借助@草莓,你看到的数据是什么?你希望看到什么?你到底看到了什么?没有这些调试比实际试图识别和解决问题要复杂得多。我看到的数据根本不是我试图查询的数据的正确值,这肯定是我的代码有问题。