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

私はこれを実行していませんが、うまくいくと思います。実行して、エラーが発生した場合はお知らせください

id、rssi1、日付を選択 (SELECT TOP 8 id、rssi1、日付 FROM 履歴 WHERE (siteName = 'CCL03412') ORDER BY id DESC) order by date ;

于 2013-07-04T20:35:01.603 に答える