common_table_expression-每天抓N筆資料



關於CTE介紹請看這:https://docs.microsoft.com/zh-tw/sql/t-sql/queries/with-common-table-expression-transact-sql

可能會覺得CTE跟temp table相似,都拿來暫存資料,但可以參考這個建議,視情況使用。
http://www.dotnettricks.com/learn/sqlserver/difference-between-cte-and-temp-table-and-table-variable

建議有sub-query可以使用CTE,寫起來比較直觀且易讀。

那今天就拿CTE拿抓每日前N筆資料來試試。

;WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY convert(varchar(max), date, 111) order by XXX) AS rn
   FROM Table
)
SELECT * FROM cte WHERE rn < N+1

語法很簡單,是一個有子查詢的語法,可以用CTE來寫,把日期分割當成Row number,變成table,再來在抓row number小於N+1就可以抓到每日N筆資料了,記得你用甚麼當排序就是抓那種排序的前N筆(XXX那邊修改)。

留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)