0
编辑 - 重申我的需要,因为两个家伙的方式比我更容易误解我的问题,所以我需要使这个更好...SQL Server首先获得排名?
我有一个像下面的表。我需要选择“ison”列为1的第一组'sec1'行的所有行。因此,查询应该首先返回'bbb'行,但是如果我将所有行设置为ison = 0,然后使'ccc'行ison = 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
谢谢。
如果我这样做:update #grp set ison = 0; update #grp set ison = 1 where sec1 ='aaa'然后运行你的select语句我只得到一行aaa,而不是两行。我需要帮助了解如何获取每个sec1组中的所有行,而不仅仅是第一个匹配的sec1组中的第一行。谢谢。 – Snowy 2011-12-20 19:20:23
你可以尝试更新的答案吗? – Akhil 2011-12-20 19:32:08