如何反转来自已包含ORDER BY的SQL查询的表

时间:2013-07-04 20:31:57

标签: sql sql-server sql-order-by

这是我的问题:

SELECT TOP 8 id, rssi1, date
FROM history
WHERE (siteName = 'CCL03412') 
ORDER BY id DESC

结果如下:

enter image description here

如何使用SQL基于日期(Column2)反转此表?

5 个答案:

答案 0 :(得分:2)

您可以简单地使用子查询。如果您应用TOP子句,则允许嵌套ORDER BY

SELECT X.* FROM(
  SELECT TOP 8 id, Column1, Column2
  FROM dbo.History
  WHERE (siteName = 'CCL03412') 
  ORDER BY id DESC) X
ORDER BY Column2

Demo

  

子查询的SELECT查询始终括在括号中。它   不能包含COMPUTE或FOR BROWSE子句,可能只包含一个   当指定了TOP子句时,ORDER BY子句

Subquery Fundamentals

答案 1 :(得分:1)

您可以使用第一个查询来获取匹配的ID,并将它们用作IN子句的一部分:

SELECT id, rssi1, date
FROM history
WHERE id IN
(
    SELECT TOP 8 id
    FROM history
    WHERE (siteName = 'CCL03412') 
    ORDER BY id DESC
)
ORDER BY date ASC

答案 2 :(得分:1)

没有运行它,但我认为它应该顺利

WITH cte AS 
(
    SELECT id, rssi1, date, RANK() OVER (ORDER BY ID DESC) AS Rank
    FROM history
    WHERE (siteName = 'CCL03412')
)
SELECT id, rssi1, date
FROM cte
WHERE Rank <= 8
ORDER BY Date DESC

答案 3 :(得分:1)

尝试以下方法:

select * from (SELECT TOP 8 id, rssi1, date
FROM history
WHERE (siteName = 'CCL03412') 
ORDER BY id DESC ) aa order by aa.date DESC

答案 4 :(得分:0)

我没有运行这个,但我认为它会起作用。如果您遇到错误,请执行并告诉我

选择id,rssi1,日期(SELECT TOP 8 id,rssi1,date 从历史 WHERE(siteName ='CCL03412') ORDER BY id DESC)按日期排序;