iT邦幫忙

1

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

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

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

如下圖

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

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) --,若資料不足五筆,也必須顯示頭尾資料

線上測試連結

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) --,若資料不足五筆,也必須顯示頭尾資料

搞定了,感謝唷!!

我要發表回答

立即登入回答