我有一个Access数据库我正在使用VB .NET中的SQL查询。我正在查询的表中有一个名为“Day”的列,它将日期存储为Access中的文本数据类型。我需要选择字段中的所有唯一实例,因此我正在使用:
SELECT Day FROM Slot GROUP BY Day
但是当我按时间顺序需要时,这会按字母顺序返回日期。现在假设它可以采取的唯一可能的值是“星期一”,“星期二”,“星期三”,“星期四”和“星期五”,你会建议你做什么来正确排序?
编辑:该表名为Slot,有三列; SlotNumber(自动编号),日(文本),SlotTime(文本)。一个例子可能是:
SlotNumber: 6
日:星期一
SlotTime:下午2:40
答案 0 :(得分:3)
如果你坚持使用数据,我建议你添加一个ORDER BY子句。在ORDER BY子句中,您需要将每个不同的值映射到数值。
例如,使用IIf
SELECT Slot.Day
FROM Slot
GROUP BY Slot.Day
ORDER BY IIf(Slot.Day = "Monday", 1,
IIf(Slot.Day = "Tuesday", 2,
IIf(Slot.Day = "Wednesday", 3,
IIf(Slot.Day = "Thursday", 4,
IIf(Slot.Day = "Friday", 5)))));
例如,使用SWITCH
SELECT Slot.Day
FROM Slot
GROUP BY Slot.Day
ORDER BY SWITCH(Slot.Day = 'Monday', 1,
Slot.Day = 'Tuesday', 2,
Slot.Day = 'Wednesday', 3,
Slot.Day = 'Thursday', 4,
Slot.Day = 'Friday', 5);
答案 1 :(得分:1)
你不能以你想要的方式“排序”它们。无论如何,为什么要使用文本值?执行此操作的标准方法是使用数值表示日期; 0 =星期日,1 =星期一,2 =星期二等等。因此,您将拥有值为1-5的int
字段。然后你可以正确排序。