iT邦幫忙

1

請問oracle 或 MSSQL 取每5筆的頭尾資料

  • 分享至 

  • xImage

資料表只有 no,id
cus_num 是我用 ROW_NUMBER() OVER (ORDER BY table.no) 自訂編號的

請教一下各位大神,有什麼方法可以取固定筆數資料
例如
我要取每五筆頭尾資料就好,若資料不足五筆,也必須顯示頭尾資料

如下圖

https://ithelp.ithome.com.tw/upload/images/20190523/20082456WKcrAgBjeL.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
暐翰
iT邦大師 1 級 ‧ 2019-05-23 16:56:43
最佳解答

可以使用mod 5 + in(0,1) 判斷頭尾
假如想要不足也要顯示,可以額外判斷假如是最大cus_num也要顯示

with cte as (
	select ROW_NUMBER() OVER (ORDER BY T.no) as cus_num
		,no,id
	from T
)
select * from cte 
where cus_num % 5 in (0,1) --我要取每五筆頭尾資料就好
 or cus_num = (select max(cus_num) from cte) --,若資料不足五筆,也必須顯示頭尾資料

線上測試連結

阿海 iT邦新手 2 級 ‧ 2019-05-23 17:42:41 檢舉
where cus_num % 5 in (0,1)

請問一下這段能有oracle的用法嗎? 謝謝
我用mod跑不了

暐翰 iT邦大師 1 級 ‧ 2019-05-23 17:51:57 檢舉

young122333
oracle 改成使用mod函數

with cte as (
	select ROW_NUMBER() OVER (ORDER BY T.no) as cus_num
		,no,id
	from T
)
select * from cte 
where mod(cus_num,5) in (0,1) --我要取每五筆頭尾資料就好
 or cus_num = (select max(cus_num) from cte) --,若資料不足五筆,也必須顯示頭尾資料
阿海 iT邦新手 2 級 ‧ 2019-05-24 14:15:30 檢舉

搞定了,感謝唷!!

我要發表回答

立即登入回答