我正在尝试更正ASP.NET下拉列表的排序顺序。
我遇到的问题是我需要选择一个不同的序列号,并将这些数字按DateTime Desc组织。
但是如果在我的查询中没有选择DateTime字段的情况下使用DISTINCT,我就不能ORDER BY DateTime。
但是,如果我选择DateTime,则会选择与单个序列号关联的每个数据值,并导致重复。
我的页面的目的是显示所有序列的数据,或与一个序列相关的数据。当一个新的循环开始时(因为它是一个新的生产运行),Serial恢复为1.所以我不能简单地按序列号组织。
当我使用以下SQL语句时,列表框按照我要求的顺序排列,但经过一段时间(通常是几个小时)后,订单会发生变化并且似乎没有有组织的结构。
alt text http://img7.imageshack.us/i/captureky.jpg/
我是ASP.NET / SQL的新手,有人知道我的问题的解决方案。
答案 0 :(得分:3)
如果每个序列号有多个日期时间,那么您要用哪个序列号进行订购?如果是最新的,试试这个:
SELECT SerialNumber,
MAX(DateTimeField)
FROM Table
GROUP BY SerialNumber
ORDER BY 2 DESC
答案 1 :(得分:0)
我不知道是否所有人都同意这一点,但是当我在查询中看到DISTINCT时,首先想到的是“这是错的”。通常,DISTINCT不是必需的,当编写查询的人不太了解他在做什么时就会使用它,这可能是因为你说你是Sql的新手。
如果没有完全了解你的模型很难帮助你百分之百,但我会说你应该使用GROUP BY子句而不是DISTINCT,那么你可以正确地订购它。