0

这是我的查询:

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

这是结果:

在此处输入图像描述

如何使用 SQL 根据日期 (Column2) 反转此表?

4

5 回答 5

2

您可以使用第一个查询来获取匹配的 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
于 2013-07-04T20:36:46.753 回答
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

演示

子查询的 SELECT 查询总是用括号括起来。它不能包含 COMPUTE 或 FOR BROWSE 子句,并且只能在同时指定 TOP 子句时包含 ORDER BY 子句

子查询基础

于 2013-07-04T20:43:47.063 回答
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
于 2013-07-04T20:41:04.770 回答
1

试试下面的:

select * from (SELECT TOP 8 id, rssi1, date
FROM history
WHERE (siteName = 'CCL03412') 
ORDER BY id DESC ) aa order by aa.date DESC
于 2013-07-04T20:43:45.823 回答
0

我没有运行它,但我认为它会起作用。执行并让我知道您是否遇到错误

select id, rssi1, date from (SELECT TOP 8 id, rssi1, date FROM history WHERE (siteName = 'CCL03412') ORDER BY id DESC) 按日期排序;

于 2013-07-04T20:35:01.603 回答