логика запросов MySQL - PullRequest
       25

логика запросов MySQL

0 голосов
/ 24 ноября 2011

У меня есть 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 для сравнения столбцов «запланированная дата» и «актуальная дата»? если даты совпадают, задайте для поля запроса значение «время», иначе, если актуальная дата> запланированная дата затем » deliverylate. Так что в идеале я хочу следующий вывод:

deliverynumber | loadnumberdate | haulier         | planneddate         | actualenddate | mitigation    | Status
44             | 484487         | stols transport | 2011-11-26 15:50:00 | 2011-11-26    | customerdelay | ontime.

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Вы можете использовать оператор CASE или IF функцию .Возможно что-то вроде:

SELECT ....,  IF(actualenddate>planneddate,'deliverylate','ontime') AS status FROM ....
1 голос
/ 24 ноября 2011

Вы можете обернуть свой исходный запрос как подзапрос.Это переименует столбцы.Затем используйте предложение 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).

1 голос
/ 24 ноября 2011

используйте mysql, если условие и функция преобразования даты для проверки и отображения в соответствии с ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...