编辑 - 重申我的需要,因为两个比我排名更高的人误解了我的问题,所以我需要做得更好......
我有一张像下面这样的桌子。我需要为第一组 'ison' 列为 1 的 'sec1' 行选择所有行。因此查询应首先返回 'bbb' 行,但如果我将所有行设置为 ison=0 然后使'ccc'行iso=1,然后我会在结果集中得到两行'ccc'。任何人都可以帮助我提高我的排名/排名吗?使用 MSSQL 2008。
create table #grp ( sec1 varchar(4) , sec2 varchar(4) , ison bit )
insert into #grp values ( 'aaa' , '001' , 0 )
insert into #grp values ( 'aaa' , '002' , 0 )
insert into #grp values ( 'bbb' , '001' , 1 )
insert into #grp values ( 'ccc' , '001' , 1 )
insert into #grp values ( 'ccc' , '001' , 1 )
Select * From
( Select
sec1 ,
sec2 ,
ison ,
RANK() Over ( partition by sec1 order by sec1,sec2 ) as rowrank
from #grp
where ison=1
) tmp
where rowrank=1
谢谢。