查询是按日期和访问类型排序。
如果同一日期有两种不同类型的访问,则应更改订单。
查询:
SELECT * FROM Visits v
Order by
v.visitdate ,
,CASE
WHEN v.[VisitType] = 6 THEN 1
WHEN v.[VisitType] = 5 THEN 2
WHEN v.[VisitType] = 3 THEN 3
WHEN v.[VisitType] = 4 THEN 4
WHEN v.[VisitType] = 2 THEN 5
WHEN v.[VisitType] = 1 THEN 6
END
在以下示例中,在同一日期11月05日有两种不同类型的访问。
+-------------+--------+
| Date | Type |
+-------------+--------+
| 30-Oct-2015 | 2 |
| 30-Oct-2015 | 2 |
| 04-Nov-2015 | 1 |
| 05-Nov-2015 | 2 |
| 05-Nov-2015 | 1 |
+-------------+--------+
所以最后两行的顺序应该是另一种方式。现在我需要担心类型1和2,休息将保持相同的顺序。
+-------------+--------+
| Date | Type |
+-------------+--------+
| 30-Oct-2015 | 2 |
| 30-Oct-2015 | 2 |
| 04-Nov-2015 | 1 |
| 05-Nov-2015 | 1 |
| 05-Nov-2015 | 2 |
+-------------+--------+
只是想知道是否可以这样做。
答案 0 :(得分:1)
你写过:
Visit = 1 Status = 2
并且您希望按日期和访问类型排序,在访问之前需要的位置,然后是状态。所以,以简单的方式......
试试这个:
SELECT * FROM Visits v
Order by
v.visitdate, v.visitType
答案 1 :(得分:0)
虽然您的查询中缺少Type
,但我的建议如下:
SELECT *
FROM Visits v
ORDER BY VisitDate ASC
,CASE
WHEN v.[VisitType] = 6 THEN 1
WHEN v.[VisitType] = 5 THEN 2
WHEN v.[VisitType] = 3 THEN 3
WHEN v.[VisitType] = 4 THEN 4
WHEN v.[VisitType] = 2 THEN 5
WHEN v.[VisitType] = 1 THEN 6
END DESC
以下是SQLFiddle with how the code works on your sample data示例。
您的CASE
中不需要复杂的ORDER BY
语句,以便以此格式显示数据。有更简单的方法。