2017-09-27 164 views
-2

我有下表,我執行此查詢期望得到201705結果未從子查詢中選擇

SELECT top 1 TIME FROM 
(
    SELECT TOP 3 TIME 
    FROM TABLE 
    WHERE TIME >= 201703 
) t 
Order by TIME desc 

不過,我得到201712 ..

TIME 
201605 
201606 
201607 
201608 
201609 
201610 
201611 
201612 
201701 
201702 
201703 
201704 
201705 
201706 
201707 
201708 
201709 
201710 
201711 
201712 
+2

標籤你使用的DBMS,查詢是特定產品。 – jarlh

+4

將訂單放入子查詢中。 – Sankar

+0

添加一些示例表格數據和預期結果 - 作爲格式化文本(不是圖片)。 – jarlh

回答

0

你並不需要一個子查詢,但每當你使用TOP(n)的,你還需要使用ORDER BY

SELECT TOP(1) [TIME] 
FROM TABLE 
WHERE [TIME] >= 201703 
ORDER BY [TIME] DESC 

「時間」是T-SQL中使用的一個詞(作爲數據類型),所以使用[]或「」來確保它不被誤解。我不推薦「日期」或「時間」作爲列名。

如果是想第三最新的條目,試試這個

SELECT TOP (1) [TIME] 
FROM (
    SELECT TOP (3) [TIME] 
    FROM TABLE 
    WHERE TIME >= 201703 
    ORDER BY [TIME] DESC 
) t 
ORDER BY [TIME] ASC 
+1

我認爲OP想要第三排,而不是TOP(1).... – TriV

+0

@TriV好了,沒有明確的通知我們這是猜測。也許你是對的。 –

+0

是的,我想得到第三個201705。 – Nicklooo