避免重复一列

问题描述 投票:1回答:2

我有一张桌子

sid id  rNum    str      power  con1  rc
15  287 6       Grit     0      0    225
15  288 7       Short    0      0    225
15  289 8       Grade    0      0    225
16  224 3       Mega     0      1    222
17  432 7       Server   0      0    656

我希望有这样的结果

sid id  rNum    str      power  con1  rc
15  287 6       Grit     0      0    225
16  224 3       Mega     0      1    222
17  432 7       Server   0      0    656

这意味着我想显示唯一的“ sid”,并显示组中的第一个值

我已经尝试了独特但未得到期望的结果。

sql sql-server tsql greatest-n-per-group
2个回答
1
投票

您可以使用子查询进行过滤。假设每个sidfirst记录是具有最小id的记录,则为:

select t.*
from myable t
where t.id= (select min(r1.id) from mytable t1 where t1.sid = t.sid)

或者,您也可以使用row_number()

select *
from (
    select t.*, row_number() over(partition by sid order by id) rn
    from mytable t
) t
where rn = 1

0
投票

具有row_number()窗口功能:

select t.sid, t.id, t.rNum, t.str, t.power, t.con1, t.rc
from (
  select *, row_number() over (partition by sid order by id) rn
  from tablename
) t
where t.rn = 1
© www.soinside.com 2019 - 2024. All rights reserved.