2012-06-02

MS SQL 利用CTE查詢各群組前幾名

上一篇MS SQL 遞迴查詢,說明CTE的基本語法,
此篇跟遞查詢沒有關係,但利用CTE產生的暫存資料來篩選出各群組排名。
--資料以SpecNo分類並PnameD欄位資料長度做排名
WITH CTE_Spec AS (
    SELECT SpecNo,Token,PA,Pcolor,PnameD,RANK() OVER (PARTITION BY SpecNo ORDER BY LEN(PnameD)) AS Seq
    FROM Prod
    WHERE isNULL(SpecNo,'') <> ''
    GROUP BY SpecNo,Token,PA,Pcolor,PnameD
)

--抓取各群組第一名
SELECT SpecNo,PnameD
FROM CTE_Spec
WHERE Seq = 1

沒有留言: