#title 부분정렬 sqler.com에 [http://www.sqler.com/?document_srl=473875&mid=bSQLQA&rnd=473982#comment_473982 재미있는 질문]이 올라와 풀어봤다. 다음과 같은 테이블이 있다. {{{ --drop table #temp create table #temp(id int, sort_yn int) insert #temp values(1,0),(2,0),(3,1),(4,1),(5,1),(6,1),(7,0),(8,1),(9,0) select * from #temp /* id sort_yn ----------- ----------- 1 0 2 0 3 1 4 1 5 1 6 1 7 0 8 1 9 1 10 0 */ }}} 위 테이블에서 다음과 같이 trnd = 1인 row들만 랜덤으로 정렬하고자 한다. 원하는 예를 들면 다음과 같다. {{{ id sort_yn ----------- ----------- 1 0 2 0 5 1 6 1 4 1 3 1 7 0 9 1 8 1 10 0 }}} 다음과 같이 하면 된다. {{{ select id , sort_yn from ( select id , sort_yn , seq , row_number() over(partition by seq order by newid()) sort from ( select id , case when sort_yn = 1 then min(id) over(partition by grp) else id end seq , sort_yn , grp from ( select id , sort_yn , row_number() over(order by id) - row_number() over(order by sort_yn, id) grp from #temp a ) t ) t ) t order by seq, sort }}}