台灣最大程式設計社群網站
線上人數
1929
 
會員總數:240902
討論主題:186660
歡迎您免費加入會員
討論區列表 >> MS SQL >> TSQL ROW_NUMBER() 排序後 再抓出某範圍的資料
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
TSQL ROW_NUMBER() 排序後 再抓出某範圍的資料
價值 : 30 QP  點閱數:252 回應數:4

樓主

芋頭
初學者
247 442
2890 433
發送站內信

請問各位高手
我想要針對 INDEX_NO 來抓出10~20的資料
請問要如何做阿?
謝謝指導
select ROW_NUMBER() OVER (order by Name) as INDEX_NO,Name from TableA
where INDEX_NO>10 AND INDEX_NO<=20 -->無效的資料行名稱 'INDEX_NO'。

搜尋相關Tags的文章: [ ROW_NUMBER() ] , [ 抓出某範圍的資料 ] ,
本篇文章發表於2017-07-26 11:49
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
select * from (select ROW_NUMBER() OVER (order by Name) as INDEX_NO,Name from TableA) AS a
where INDEX_NO>10 AND INDEX_NO<=20

我晚上才能測試,
MS-SQL比較少用,
如果你的語法沒錯,
這樣子用就可以了。
本篇文章回覆於2017-07-26 12:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

芋頭
檢舉此回應
1.所以只能在外面包一層select *......
2.那麼如果是用with的方式去select出來 就沒法用了ㄅ?
select * from (
;with CTE as (.......)
select ROW_NUMBER() OVER (order by Name) as INDEX_NO,Name from CTE
) as NewTable where INDEX_NO>10 AND INDEX_NO<=20
本篇文章回覆於2017-07-26 13:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

史努比
檢舉此回應
CTE時, 應該直接在CTE裡加上輸出序號

WHERE 在外面那一層


如果你的 sql server 版本在2012以上, 可以考慮使用 order by name offset 10 rows fetch next 10 rows only 的語法


本篇文章回覆於2017-07-26 13:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
感謝史奴比大大
本篇文章回覆於2017-07-27 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.