通过连续更多日期排序最早的日期
问题描述:
我的数据库中的每个定制者都有一个自己的行。
对于每位客户,我保存了他购买的产品以及何时需要新产品。
但有时客户有更多的产品,如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” ......,所以这个例子雅各是第一,第二彼得和安娜最后。
答
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'))
答
您可以使用LEAST():
使用两个或更多参数,返回最小(最小值)参数。
select *from customor order by least(dateneednew1,dateneednew2) asc;
+0
@ delato468你现在的错误是什么? –
设计不佳的数据库....正规化您的表格 –
您可以轻松地在您的SQL中添加'ORDER BY date ASC'。 ;-) –
您可以为每个用户和每个销售单独一行!它使创建脚本变得更容易! – Soheyl