2015-06-19 73 views
0

我有這樣如何使用選擇日期部分

SELECT TOP 1 
    ROW_NUMBER() OVER (ORDER BY column_date DESC) AS ROWID, * 
FROM 
    table_report 
WHERE 
    column_date = datepart(year,date) 

正確一個SQL查詢,如果我錯了。我想要從datetime開始的年,然後選擇年份前1行數

+2

TOP 1 ROW_NUMBER()OVER(ORDER BY DATEPART(年,column_date)DESC)AS ROWID .......其中DATEPART(年,column_date)= DATEPART (年份,日期) –

+0

它運行不正確。當我嘗試時,顯示錯誤消息「datepart」附近的語法錯誤 – breezasky

+0

非常感謝。我可以解決我的問題 – breezasky

回答

0

您可以通過向窗口函數添加分區來選擇每年的第一行(按您提供的順序),然​​後篩選剛上每年的第一行:

SELECT * FROM 
(
    SELECT ROW_NUMBER() OVER 
    (PARTITION BY datepart(year,date) ORDER BY column_date DESC) AS ROWID, 
    * 
    FROM table_report 
) X 
WHERE ROWID = 1; 
相關問題