database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39361 게시물 읽기
No. 39361
rownum을 부여하려고 하는데 잘 안되네용 ㅠㅠ
작성자
최상민(roice81)
작성일
2012-03-26 17:52
조회수
5,101

오랜만에 다시 SQL을 하려고 해보니 이거 영 힘드네요

한 3년만에 다시 돌아와서 하려고 하는데 잘 안되서 문의드립니다.

select '1001' as TMP_A, 'A1234' TMP_B, '1' TMP_C, '0' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '3' TMP_C, '1' TMP_D, 'A' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '4' TMP_C, '1' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '6' TMP_C, '2' TMP_D, 'A' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '7' TMP_C, '2' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '8' TMP_C, '0' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '9' TMP_C, '1' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '10' TMP_C, '2' TMP_D, 'A' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '11' TMP_C, '2' TMP_D, 'D' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '12' TMP_C, '3' TMP_D, 'A' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '13' TMP_C, '0' TMP_D, 'D' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '15' TMP_C, '1' TMP_D, 'A' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '16' TMP_C, '1' TMP_D, 'D' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '18' TMP_C, '2' TMP_D, 'D' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '1' TMP_C, '0' TMP_D, 'D' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '3' TMP_C, '1' TMP_D, 'A' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '10' TMP_C, '1' TMP_D, 'D' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '11' TMP_C, '2' TMP_D, 'D' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '72' TMP_C, '0' TMP_D, 'D' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '78' TMP_C, '1' TMP_D, 'A' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '79' TMP_C, '1' TMP_D, 'D' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '80' TMP_C, '2' TMP_D, 'D' TMP_E from dual

위의 Data에 아래와 같이 Tmp_e를 변경 하고자 합니다

요지는 Tmp_A의 같은 아이디중 tmp_c의 순번이 변경될때 까지의 rownum을 동일하게 넣고싶습니다.

select '1001' as TMP_A, 'A1234' TMP_B, '1' TMP_C, '0' TMP_D, '1' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '3' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '4' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '6' TMP_C, '2' TMP_D, '1' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '7' TMP_C, '2' TMP_D, '1' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '8' TMP_C, '0' TMP_D, '2' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '9' TMP_C, '1' TMP_D, '2' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '10' TMP_C, '2' TMP_D, '2' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '11' TMP_C, '2' TMP_D, '2' TMP_E from dual union all
select '1001' as TMP_A, 'A1234' TMP_B, '12' TMP_C, '3' TMP_D, '2' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '13' TMP_C, '0' TMP_D, '1' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '15' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '16' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1002' as TMP_A, 'A1234' TMP_B, '18' TMP_C, '2' TMP_D, '1' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '1' TMP_C, '0' TMP_D, '1' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '3' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '10' TMP_C, '1' TMP_D, '1' TMP_E from dual union all
select '1003' as TMP_A, 'A1235' TMP_B, '11' TMP_C, '2' TMP_D, '1' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '72' TMP_C, '0' TMP_D, '2' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '78' TMP_C, '1' TMP_D, '2' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '79' TMP_C, '1' TMP_D, '2' TMP_E from dual union all
select '1004' as TMP_A, 'A1235' TMP_B, '80' TMP_C, '2' TMP_D, '2' TMP_E from dual

 

꼭 좀 부탁드릴께요 ㅠㅠ

처음부터 다시 공부해야할거 같아요 흑흑

이 글에 대한 댓글이 총 2건 있습니다.

WITH t(tmp_a, tmp_b, tmp_c, tmp_d, tmp_e) AS
(
SELECT '1001', 'A1234',  1, 0, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234',  3, 1, 'A' FROM dual
UNION ALL SELECT '1001', 'A1234',  4, 1, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234',  6, 2, 'A' FROM dual
UNION ALL SELECT '1001', 'A1234',  7, 2, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234',  8, 0, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234',  9, 1, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234', 10, 2, 'A' FROM dual
UNION ALL SELECT '1001', 'A1234', 11, 2, 'D' FROM dual
UNION ALL SELECT '1001', 'A1234', 12, 3, 'A' FROM dual
UNION ALL SELECT '1002', 'A1234', 13, 0, 'D' FROM dual
UNION ALL SELECT '1002', 'A1234', 15, 1, 'A' FROM dual
UNION ALL SELECT '1002', 'A1234', 16, 1, 'D' FROM dual
UNION ALL SELECT '1002', 'A1234', 18, 2, 'D' FROM dual
UNION ALL SELECT '1003', 'A1235',  1, 0, 'D' FROM dual
UNION ALL SELECT '1003', 'A1235',  3, 1, 'A' FROM dual
UNION ALL SELECT '1003', 'A1235', 10, 1, 'D' FROM dual
UNION ALL SELECT '1003', 'A1235', 11, 2, 'D' FROM dual
UNION ALL SELECT '1004', 'A1235', 72, 0, 'D' FROM dual
UNION ALL SELECT '1004', 'A1235', 78, 1, 'A' FROM dual
UNION ALL SELECT '1004', 'A1235', 79, 1, 'D' FROM dual
UNION ALL SELECT '1004', 'A1235', 80, 2, 'D' FROM dual
)
SELECT t.*
     , COUNT(DECODE(tmp_d, 0, 0))
       OVER(PARTITION BY tmp_a, tmp_b ORDER BY tmp_c) tmp_f
  FROM t
;

 

저는 tmp_c 가 숫자라고 봤습니다.

위에 제시하신것처럼 문자열이라면 숫자로 바꿔서 정렬하셔야 하구요.

위에 제시하신 결과는 설명과는 안맞는것 같네요.

마농(manon94)님이 2012-03-27 16:25에 작성한 댓글입니다.

감사합니다

 

문자열이 아니고 숫자였네요 ㅎㅎ

 

답변 정말 감사합니다 유용하게 잘쓰겠습니다

 

^^

최상민(roice81)님이 2012-03-27 18:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39365토드에서 백업
무명씨
2012-03-27
3386
39364쿼리조언좀 부탁드립니다... [1]
피어스
2012-03-27
3545
39362ProC 에서 file 읽기
그림자
2012-03-27
3518
39361rownum을 부여하려고 하는데 잘 안되네용 ㅠㅠ [2]
최상민
2012-03-26
5101
39360오라클 11g pivot 문의 드립니다. [2]
차상환
2012-03-26
6570
39359동일 디스크상의 성능
물어보자
2012-03-26
3369
39358[질문]숫자를 조건으로값을 넘길때 전체 또는 조건 준것만 조회 [1]
안동석
2012-03-24
3375
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다