通过连续更多日期排序最早的日期

问题描述:

我的数据库中的每个定制者都有一个自己的行。
对于每位客户,我保存了他购买的产品以及何时需要新产品。
但有时客户有更多的产品,如2-3。某些行的
例子:
通过连续更多日期排序最早的日期

id | customername | product1 | dateneednew1 | product2 |dateneednew2 
1. | Jacob ....... | a product| 2017-11-18 ... | a product| 2016-12-01 
2. | Anna ........ | a product| 2016-12-10 ....| a product| 2017-10-10 
2. | Peter ....... | a product| 2016-12-05 ... | a product| 2017-08-10 

现在,我想所有“dateneednew1”的最早日期顺序 - “dateneednew2” ......,所以这个例子雅各是第一,第二彼得和安娜最后。

+6

设计不佳的数据库....正规化您的表格 –

+1

您可以轻松地在您的SQL中添加'ORDER BY date ASC'。 ;-) –

+2

您可以为每个用户和每个销售单独一行!它使创建脚本变得更容易! – Soheyl

ORDER BY -

least(dateneednew1,dateneednew2) 

如果列可以包含NULL -

least(coalesce(dateneednew1,'3000-01-01'),coalesce(dateneednew2,'3000-01-01')) 

如果列可以包含 '0000-00-00' 作为默认的日期(糟糕的设计) -

least(coalesce(nullif(dateneednew1,'0000-00-00'),'3000-01-01'),coalesce(nullif(dateneednew2,'0000-00-00'),'3000-01-01')) 
+0

是的,我有空=),嗯它没有工作,可能是我的错误。 – delato468

+0

由于NULLS它不起作用; D。 – delato468

+0

@ delato468现在显示错误是什么? –

您可以使用LEAST()

使用两个或更多参数,返回最小(最小值)参数。

select *from customor order by least(dateneednew1,dateneednew2) asc; 
+0

@ delato468你现在的错误是什么? –