MySQL查询过滤器由两个日期列排序

时间:2015-01-18 10:21:59

标签: mysql vb.net

我希望将我的表格安排在date_due列和date_paid列的正确日期序列中。

我的表结构显示如下,并按due_date列排序:

Period      Due Date        Paid Date
                            12/01/2014
                            02/05/2014
1           01/01/2015
2           02/01/2015
3           03/01/2015
4           04/01/2015

然后我想要的就是这样做:

Period       Due Date       Paid Date
                            12/01/2014
1            01/01/2015
2            02/01/2015
                            02/05/2014
3            03/01/2015
4            04/01/2015

1 个答案:

答案 0 :(得分:0)

好吧忘记我的愚蠢评论 - 这不是建设性的。首先,我认为你的数据有误:我猜“02/05/2014”应该是“02/05/2015”。

问题是你必须聚合两列,以便能够在那之后进行排序。使用像我在评论中所述的GREATEST函数实际上是行不通的,因为它不是null-save。您可以在此处使用COALESCE function

总而言之,这可以通过“添加列”来完成,例如

SELECT 
  *, Coalesce(`Due Date`, `Paid Date`) as bananas
FROM 
  table1
ORDER BY
  bananas

或者直接将表达式添加到ORDER BY子句:

SELECT 
  *
FROM 
  table1
ORDER BY
  Coalesce(`Due Date`, `Paid Date`)

请看这个小提琴并尝试自己:http://sqlfiddle.com/#!2/21a84/1