首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期的MySQL多个if语句

日期的MySQL多个if语句
EN

Stack Overflow用户
提问于 2013-10-04 18:16:03
回答 1查看 335关注 0票数 1

我试图得到两列之间的日期差异,然后最终得到按承包商字段分组的平均天数。我能够降低大部分SQL,但我似乎不知道如何获得多个if场景的日期差异。

基本上,如果原始日期列为空,而新日期列为空,则获取新日期和排序日期之间的日期差异。反之亦然。如果原始日期和新日期都为空,只需将日期差异设置为空。它应该如下所示,而不考虑分组的平均天数。

下面的SQL (还没有包含avg函数):

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-04 18:24:15

合并是您的朋友-它返回列表中的第一个非空值,如果它们都为空,则返回NULL。

所以你想要的可能是

代码语言:javascript
复制
datediff(coalesce(original_date, new_date), order_date)

如果两者都为空,则datediff将返回null。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19188079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档