[SQL ] 同個group取出前兩筆資料

作者: hungwei0331 (Game)   2016-12-06 00:32:59
資料庫名稱:sql server
內容/問題描述:
期望同個group取出前兩筆
假設有多筆資料
pkey1 123
pkey2 123
pkey3 123
pkey4 456
pkey5 456
pkey6 456
使用group by 後想要只取出前兩筆資料如下
pkey1 123
pkey2 123
pkey4 456
pkey5 456
目前使用過子查詢並且將連結中範例改為select top 2
連結如下,
https://goo.gl/DVLvjw
但會有錯誤訊息提示子查詢不可回傳多筆資料
還請前輩們開示與提點 謝謝
作者: streetbad (翊)   2016-12-06 08:50:00
把group欄位distinct丟到暫存,設定變數去接總共幾種group,再用WHILE迴圈看是要組字串(UNION語法)或是塞到新的暫存表如果需要寫法再跟我說吧.....
作者: LegendC (小寶)   2016-12-06 11:26:00
select * from @table a where Memo IN( SELECT TOP 1 Memo from @table where ID = a.ID)把上面那行的TOP 1 改成 TOP N就可以達到你要的
作者: streetbad (翊)   2016-12-06 11:44:00
對耶樓上的寫法是選每種group的前兩筆....語法試了一下 欄位對應 Memo=pkey, ID = 123/456/.....感謝傳說C~~Orz 我也撞牆了剛才

Links booklink

Contact Us: admin [ a t ] ucptt.com