今天試用了一下發現怎麼叫都叫不出來
想到之前用teradata的經驗是,一定要取別名!!!
不取別名好像就不是個資料表一樣!!
PL/SQL就沒這麼龜毛,心想該不會MS SQL也在這種奇怪的地方有所堅持吧..
一試之下果然要取別名,這死孩子!
參考網址、參考網址
簡單來說如果要取一大包查詢裡面的前100個,大致語句是這樣
SELECT TOP 100 * FROM (
--不管多複雜的SQL都可以丟這裡
) AS A
中間是什麼不是挺重要的,反正就是到處join出來的一個資料表
重點是最後要加別名
另外附上PL/SQL的取前100個寫法
SELECT AA,BB,CC FROM
(
SELECT AA,
BB,
CC,
row_number() over(PARTITION BY AA, BB,CC ORDER BY CC desc) RN
)
WHERE RN <101
這種寫法會將AA,BB,CC三個欄位選出來,又不會把序號也印出來
至於怎麼編列序號,取決於(PARTITION BY AA, BB,CC ORDER BY CC desc這行
是指以AA,BB,CC為群組,以CC當排序列
這邊可以有比較進階的用法,例如某一筆資料有10個存取紀錄,可以取出最新一筆之類的
詳細要怎麼寫還是要看需求~
有問題可以留言問喔~
一樣要全文轉載請留個言跟我講一下..
沒有留言:
張貼留言