按多列SQL排序

时间:2018-03-13 18:51:20

标签: sql sql-server

我有一个列表,我应该在SQL中按多列排序。 首先,我应该按日期订购列表,之后按OrderCriteria订购。 我制作了一个SQL小提琴:http://sqlfiddle.com/#!9/c135c6/1包含一些测试数据。

列表应按StatusDate排序,因为列表顶部应该是最新的项目。但它也应该由OrderCriteria订购,因为首先它应该出现OrderCriteria 0的项目,然后是OrderCriteria 1。

在此屏幕截图中,它显示了正确的顺序。

enter image description here

首先是所有具有最新日期的项目,但首先是OrderCriteria 0,然后是OrderCriteria为1的位置。

正确的顺序应该是:我已添加到SQL Fiddle。 我已经尝试按StatusDate排序,它正确地命令了项目,但没有考虑OrderCriteria。它只按日期订购。 我试图通过

订购
ORDER BY  StatusDate DESC, OrderCriteria asc

没有OrderCriteria。但我仍然没有得到理想的结果。 你能告诉我如何解决这个问题吗?

2 个答案:

答案 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)

SQL DEMO

在ms sql server中,您可以使用:

Select * from test 
ORDER BY cast(StatusDate as date) DESC, OrderCriteria asc, StatusDate DESC