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那邊修改)。
留言
張貼留言