我试图获取两列之间的日期差异,然后最终得到由承包商字段分组的平均天数。我能够获得大部分的SQL,但我似乎无法弄清楚如何获取多个场景的日期差异。MySQL多个if语句的日期
基本上,如果原始日期列为空,并且新日期列不是,则获取订购的新日期和日期之间的日期差异。反之亦然。如果原始日期和新日期都为空,只需将日期差异设置为空。它应该如下所示,不考虑分组的平均天数。
SQL以下(不包括AVG函数还):
SELECT PT1.CONTRACTOR AS 'Contractor', PT1.date_order AS "date ordered", PT1.DATE_COMPLETED AS "original date", PT2.DATE_COMPLETED AS "new date",
IF(PT1.DATE_COMPLETED = NULL AND PT2.DATE_COMPLETED IS NOT NULL, DATEDIFF(PT2.DATE_COMPLETED, PT1.DATE_ORDER), IF(PT2.DATE_COMPLETED = NULL AND PT1.DATE_COMPLETED IS NOT NULL, DATEDIFF(PT1.DATE_COMPLETED, PT1.DATE_ORDER), NULL)) AS "DATE DIFF"
FROM PTABLE1 PT1
INNER JOIN PTABLE2 PT2
ON PT1.ID = PT2.ID
WHERE PT2.STATUS = 'To_do' OR PT2.STATUS = 'Completed'
AND PT2.COMPLETE = 'Yes'
-- GROUP BY PT1.CONTRACTOR
您是否考虑过使用'CASE'来获得透明度? – BlitZ
如果你允许date diff为0而不是null,那么你可以使用COALESCE –
@CORRUPT为什么你说'NULL = NULL'会评估为'FALSE'?它会评估为'NULL' –