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