我希望将我的表格安排在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
答案 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