[英]Select only one row with same key value from a table
我有這張桌子:
reg_no | cname | no
1 | X | 1
1 | Y | 2
2 | X | 1
2 | Y | 2
我想要做的是選擇所有這些行,但是當我在desc中排列它時,我只希望為每個reg_no排一行(它應該只為每個reg_no獲得最高的行)。
輸出應為:
1 Y 2
2 Y 2
使用Row_Number()
窗口函數
select Reg_no,C_name,no from
(
select row_number() over(partition by reg_no order by no desc) Rn,*
from yourtable
) A
where rn=1
或ANSI SQL
標准將在sql server 2000
。 在每個reg_no
找到max
,然后將結果join
主表。
select A.Reg_no,A.C_name,A.no
from yourtable As A
Inner Join
(
select max(no) As no,Reg_no
from yourtable
group by Reg_No
) As B
on A.No=B.No and A.Reg_No=B.Reg_no
在使用CROSS APPLY的MSSQL中,這將是
SELECT DISTINCT
r1.reg_no, r2.cname, r2.no
FROM
table_name r1
CROSS APPLY
(SELECT TOP 1
r.cname, r.no
FROM
table_name r
WHERE r1.reg_no = r.reg_no
ORDER BY r.no DESC) r2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.