我有一个SQL查询,显示车辆的交付详情。 (它使用最大值来从每个车辆停靠点的一系列列中获取最大值)
SELECT deliveryid AS deliverynumber, loadid1 AS loadnumberdate,
haulieraccepted AS haulier,
greatest(drop1arrivedatetime, drop2arrivedatetime, drop3arrivedatetime,
drop4arrivedatetime, drop5arrivedatetime) AS planneddate,
date(greatest(ActualDrop1Arrive, ActualDrop2Arrive, ActualDrop3Arrive,
ActualDrop4Arrive, ActualDrop5Arrive )) AS actualenddate,
mitigation
FROM deliverydetails
WHERE deliveryid=44
输出
deliverynumber | loadnumberdate | haulier | planneddate | actualenddate | mitigation 44 | 484487 | stols transport | 2011-11-26 15:50:00 | 2011-11-26 | customerdelay
如何添加mysql查询以比较列'planneddate'和'actualenddate'?如果日期相同则将查询字段设置为'ontime'否则如果actualenddate> planneddate则'deliverylate'。理想情况下,我想要以下输出:
deliverynumber | loadnumberdate | haulier | planneddate | actualenddate | mitigation | Status 44 | 484487 | stols transport | 2011-11-26 15:50:00 | 2011-11-26 | customerdelay | ontime.
感谢您的帮助。
答案 0 :(得分:2)
您可以使用CASE
语句或IF
function。也许是这样的事情:
SELECT ...., IF(actualenddate>planneddate,'deliverylate','ontime') AS status FROM ....
答案 1 :(得分:1)
如果条件和日期转换功能根据....检查和显示使用mysql
答案 2 :(得分:1)
您可以将原始查询包装为子查询。这将重命名列。然后,使用case ... then
子句添加列。
假设您的原始查询工作正常,它将如下所示:
select
*,
case when (... some comparison on 'planneddate' and 'actualenddate' ...)
then <true output>
else <false output> end
from
(<your original query>) as myalias;
诀窍是重命名子查询中的列,允许您使用新名称(planneddate
和actualenddate
)。