0

編集-私よりもはるかにランクの高い2人の男が私の質問を誤解したので、私の必要性を言い換えます、それで私はこれをより良くする必要があります...

以下のようなテーブルがあります。'ison'列が1である'sec1'行の最初のグループのすべての行を選択する必要があります。したがって、クエリは最初に'bbb'行を返す必要がありますが、すべての行をison=0に設定してから'ccc'行をison=1にすると、結果セットに'ccc'の2行が含まれます。誰かが私のランク/トップを手伝ってくれますか?MSSQL2008を使用します。

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

ありがとう。

4

1 に答える 1

2
create table #grp ( sec1 varchar(4) , sec2 varchar(4) , ison bit )
insert into #grp values ( 'aaa' , '001' , 0 )
insert into #grp values ( 'aaa' , '002' , 1 )
insert into #grp values ( 'bbb' , '001' , 1 )
insert into #grp values ( 'ccc' , '001' , 1 )
insert into #grp values ( 'ccc' , '001' , 1 )

SELECT  *
  FROM  #grp
 WHERE  sec1 = (
                    Select TOP(1) sec1
                    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
                    Order by sec1, Sec2
                )
于 2011-12-20T19:14:11.330 に答える