ASP.NET / SQL下拉列表排序顺序

时间:2010-01-05 10:11:04

标签: asp.net sql drop-down-menu sql-order-by

我正在尝试更正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的新手,有人知道我的问题的解决方案。

2 个答案:

答案 0 :(得分:3)

如果每个序列号有多个日期时间,那么您要用哪个序列号进行订购?如果是最新的,试试这个:

SELECT  SerialNumber,
        MAX(DateTimeField)
FROM    Table
GROUP BY SerialNumber
ORDER BY 2 DESC

答案 1 :(得分:0)

我不知道是否所有人都同意这一点,但是当我在查询中看到DISTINCT时,首先想到的是“这是错的”。通常,DISTINCT不是必需的,当编写查询的人不太了解他在做什么时就会使用它,这可能是因为你说你是Sql的新手。

如果没有完全了解你的模型很难帮助你百分之百,但我会说你应该使用GROUP BY子句而不是DISTINCT,那么你可以正确地订购它。