I have source data in following format.
RN ID NAME
1 1 P
2 2 Q
3 3 R
4 4 S
5 5 T
6 1 A
7 2 B
8 3 C
9 4 D
10 5 E
I need following output.
RN ID NAME
1 1 P
2 2 PQ
3 3 PQR
4 4 PQRS
5 5 PQRST
6 1 A
7 2 AB
8 3 ABC
9 4 ABCD
10 5 ABCDE
Kindly provide SQL query for this.
Oracle 11g R2 Schema Setup :
CREATE TABLE table_name ( RN, ID, NAME ) As
SELECT 1, 1, 'P' FROM DUAL UNION ALL
SELECT 2, 2, 'Q' FROM DUAL UNION ALL
SELECT 3, 3, 'R' FROM DUAL UNION ALL
SELECT 4, 4, 'S' FROM DUAL UNION ALL
SELECT 5, 5, 'T' FROM DUAL UNION ALL
SELECT 6, 1, 'A' FROM DUAL UNION ALL
SELECT 7, 2, 'B' FROM DUAL UNION ALL
SELECT 8, 3, 'C' FROM DUAL UNION ALL
SELECT 9, 4, 'D' FROM DUAL UNION ALL
SELECT 10, 5, 'E' FROM DUAL
Query 1 :
SELECT RN,
ID,
REPLACE( SYS_CONNECT_BY_PATH( NAME, ',' ), ',' ) AS NAME
FROM TABLE_NAME
START WITH ID = 1
CONNECT BY PRIOR ID + 1 = ID
AND PRIOR ASCII(NAME) + 1 = ASCII(NAME)
Results :
| RN | ID | NAME |
|----|----|-------|
| 1 | 1 | P |
| 2 | 2 | PQ |
| 3 | 3 | PQR |
| 4 | 4 | PQRS |
| 5 | 5 | PQRST |
| 6 | 1 | A |
| 7 | 2 | AB |
| 8 | 3 | ABC |
| 9 | 4 | ABCD |
| 10 | 5 | ABCDE |
Query 2 :
SELECT RN,
ID,
REPLACE( SYS_CONNECT_BY_PATH( NAME, ',' ), ',' ) AS NAME
FROM TABLE_NAME
START WITH ID = 1
CONNECT BY PRIOR ID + 1 = ID
AND PRIOR RN + 1 = RN
Results :
| RN | ID | NAME |
|----|----|-------|
| 1 | 1 | P |
| 2 | 2 | PQ |
| 3 | 3 | PQR |
| 4 | 4 | PQRS |
| 5 | 5 | PQRST |
| 6 | 1 | A |
| 7 | 2 | AB |
| 8 | 3 | ABC |
| 9 | 4 | ABCD |
| 10 | 5 | ABCDE |
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.