我想用自定义顺序显示所有行,部分第一行的数据与2天前相同,直到当前日期(使用2016-06-18作为当前日期),之后请自定义基于最小数量的dist的行, 我使用这个sql来检索数据但总是失败。
SELECT pwaktuserver as date,
acos(cos(-7.47353794753 * (PI()/180)) *
cos(112.343534533 * (PI()/180)) *
cos(plat * (PI()/180)) *
cos(plong * (PI()/180))
+
cos(-7.47353794753 * (PI()/180)) *
sin(112.343534533 * (PI()/180)) *
cos(plat * (PI()/180)) *
sin(plong * (PI()/180))
+
sin(-7.47353794753 * (PI()/180)) *
sin(plat * (PI()/180))
) * 3959 as Dist
FROM tbpos INNER JOIN tbanggota ON tbanggota.id_a = tbpos.id_a WHERE stsTampil <> '2'
GROUP BY tbpos.posid
ORDER BY case when date(pwaktuserver)>=curdate()-2 then Dist*(-1) else Dist end
注意:1。黄色方框是由2天前的日期组成的行组
排序的数据返回核心值黄色框作为第一部分,蓝色框作为第二部分,但我的问题是在黄色框中日期不是订购DESC ,我想制作黄色框有序desc,如何我实现了我的目标?感谢
答案 0 :(得分:2)
添加另一个条件。
ORDER BY CASE WHEN date(pwaktuserver)>=curdate()-2 THEN date(pwaktuserver)
ELSE null
END DESC,
CASE WHEN date(pwaktuserver)>=curdate()-2 THEN Dist*(-1)
ELSE Dist
END ASC -- OR DESC