조건에 따른 순번 0 7 2,160

by XX큰타이거 [2015.06.03 17:49:56]


수량

순번
50 1
30 2
45 3
0  
0  
0  
9 4
20 5
0  

위와 같이 수량이 0인 경우 Null, 수량이 있을경우 순번을 지정할 방법이 있을까요?????ㅡㅡ;

by DarkBee [2015.06.03 17:56:11]
SELECT DECODE ( col, 0, NULL, ROWNUM ) 순번
     , col
  FROM (
          SELECT *
            FROM t
           ORDER BY col DESC
       )

 


by 겸댕2후니 [2015.06.03 18:08:16]

수량이 같을경우, 동일순번을 준다라는 조건이 없다면 위에 DarkBee님 쿼리로 하시면 되겠네요.


by swlee710 [2015.06.03 18:12:26]

with t (수량) as (
select 50 from dual union all
select 30 from dual union all
select 45 from dual union all
select 0  from dual union all
select 0  from dual union all
select 0  from dual union all
select 9  from dual union all
select 20 from dual union all
select 0  from dual)
select b.수량, aa.rn2 순번
from (
select 수량,rn,row_number() over(order by rownum) rn2
from (
select 수량,row_number() over(order by rownum) rn
from t a)
where 수량 <> 0
) aa
,(select 수량,rownum gb from t order by rownum) b
where aa.rn (+) = b.gb
order by gb;


by 마농 [2015.06.03 18:17:43]
SELECT 수량
     , DECODE(수량, 0, Null, SUM(SIGN(수량)) OVER(ORDER BY ROWNUM)) 순번
  FROM t
;

정렬기준이 필요한 문제인데 정렬기준항목이 보이질 않네요.

일단 ROWNUM 으로 정렬...


by swlee710 [2015.06.04 09:03:53]

와 이건 멋지네요..


by XX큰타이거 [2015.06.03 18:38:44]

DarkBee님의 쿼리로는 1,2,3,7,8이 나오네요....

마농님 조언으로 해결 했습니다.

답변주신 분들 모두 복받으세요....


by DarkBee [2015.06.04 09:40:47]

1,2,3,7,8이 왜 나오지 ;

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입