我有一个列表,我应该在SQL中按多列排序。 首先,我应该按日期订购列表,之后按OrderCriteria订购。 我制作了一个SQL小提琴:http://sqlfiddle.com/#!9/c135c6/1包含一些测试数据。
列表应按StatusDate排序,因为列表顶部应该是最新的项目。但它也应该由OrderCriteria订购,因为首先它应该出现OrderCriteria 0的项目,然后是OrderCriteria 1。
在此屏幕截图中,它显示了正确的顺序。
首先是所有具有最新日期的项目,但首先是OrderCriteria 0,然后是OrderCriteria为1的位置。
正确的顺序应该是:我已添加到SQL Fiddle。 我已经尝试按StatusDate排序,它正确地命令了项目,但没有考虑OrderCriteria。它只按日期订购。 我试图通过
订购ORDER BY StatusDate DESC, OrderCriteria asc
没有OrderCriteria。但我仍然没有得到理想的结果。 你能告诉我如何解决这个问题吗?
答案 0 :(得分:0)
您似乎希望<asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="ObjectDataSource3" Height="50px" Width="50%">
<EmptyDataTemplate>
<asp:LinkButton ID="lnkNewNote" OnClick="btnNew_Click" runat="server" CausesValidation="True" CommandName="New" Text="New"></asp:LinkButton>
</EmptyDataTemplate>
中的日期具有优先权。然后在日期内使用StatusDate
和时间组件。
所以:
OrderCriteria
Here是SQL小提琴。
从日期/时间中提取日期因数据库而异。你的SQL小提琴是MySQL,所以我使用了该数据库的语法。
在SQL Server中,这将是:
ORDER BY DATE(StatusDate) DESC, OrderCriteria asc, StatusDate DESC
答案 1 :(得分:0)
在ms sql server中,您可以使用:
Select * from test
ORDER BY cast(StatusDate as date) DESC, OrderCriteria asc, StatusDate DESC