Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Version Key creation

591131Sep 27 2007 — edited Nov 6 2010
Hi,

i have a table like

INSERT INTO my_table(
SELECT 9591 L_ID, 'GULSU1' NAME, 111 C_ID, to_date('01-NOV-99') VALID_START_DATE FROM DUAL UNION ALL
SELECT 17107, 'GULSU1', 111, to_date('18-NOV-99') FROM DUAL UNION ALL
SELECT 164522, 'GULSU1', 111, to_date('21-MAR-00') FROM DUAL UNION ALL
SELECT 177619, 'GULSU1', 111, to_date('23-APR-00') FROM DUAL UNION ALL
SELECT 197247, 'GULSU1', 111, to_date('31-MAY-01') FROM DUAL UNION ALL
SELECT 204492, 'GULSU1', 111, to_date('04-JUN-01') FROM DUAL UNION ALL
SELECT 211649, 'GULSU1', 111, to_date('12-JUN-01') FROM DUAL UNION ALL
SELECT 224614, 'GULSU1', 111, to_date('30-APR-03') FROM DUAL UNION ALL
SELECT 363415, 'GULSU1', 111, to_date('24-SEP-04') FROM DUAL UNION ALL
SELECT 9592, 'GULSU2', 112, to_date('01-NOV-99') FROM DUAL UNION ALL
SELECT 17108, 'GULSU2', 112, to_date('18-NOV-99') FROM DUAL UNION ALL
SELECT 164523, 'GULSU2', 112, to_date('21-MAR-00') FROM DUAL UNION ALL
SELECT 177620, 'GULSU2', 112, to_date('23-APR-00') FROM DUAL UNION ALL
SELECT 197248, 'GULSU2', 112, to_date('31-MAY-01') FROM DUAL UNION ALL
SELECT 204493, 'GULSU2', 112, to_date('04-JUN-01') FROM DUAL UNION ALL
SELECT 211650, 'GULSU2', 112, to_date('12-JUN-01') FROM DUAL UNION ALL
SELECT 224615, 'GULSU1', 112, to_date('30-APR-03') FROM DUAL UNION ALL
SELECT 287725, 'GULSU1', 112, to_date('25-MAR-04') FROM DUAL
);

And i select this data with keys like;

QUERY:

SELECT
dense_rank() over (order by C_ID) SK,
row_number() over (partition by C_ID order by VALID_START_DATE) VK,
L_ID,
NAME,
C_ID,
VALID_START_DATE
FROM my_table ORDER BY C_ID,VALID_START_DATE;

The output of this query is:

1 | 1 | 9591 | GULSU1 | 111 | 01-NOV-99
1 | 2 | 17107 | GULSU1 | 111 | 18-NOV-99
1 | 3 | 164522 | GULSU1 | 111 | 21-MAR-00
1 | 4 | 177619 | GULSU1 | 111 | 23-APR-00
1 | 5 | 197247 | GULSU1 | 111 | 31-MAY-01
1 | 6 | 204492 | GULSU1 | 111 | 04-JUN-01
1 | 7 | 211649 | GULSU1 | 111 | 12-JUN-01
1 | 8 | 224614 | GULSU1 | 111 | 30-APR-03
1 | 9 | 363415 | GULSU1 | 111 | 24-SEP-04
2 | 1 | 9592 | GULSU2 | 112 | 01-NOV-99
2 | 2 | 17108 | GULSU2 | 112 | 18-NOV-99
2 | 3 | 164523 | GULSU2 | 112 | 21-MAR-00
2 | 4 | 177620 | GULSU2 | 112 | 23-APR-00
2 | 5 | 197248 | GULSU2 | 112 | 31-MAY-01
2 | 6 | 204493 | GULSU2 | 112 | 04-JUN-01
2 | 7 | 211650 | GULSU2 | 112 | 12-JUN-01
2 | 8 | 224615 | GULSU1 | 112 | 30-APR-03
2 | 9 | 287725 | GULSU1 | 112 | 25-MAR-04

I want the result with one more version key that shows the NAME changes. And I want the output like:

1 | 1 | 1 | 9591 | GULSU1 | 111 | 01-NOV-99
1 | 2 | 1 | 17107 | GULSU1 | 111 | 18-NOV-99
1 | 3 | 1 | 164522 | GULSU1 | 111 | 21-MAR-00
1 | 4 | 1 | 177619 | GULSU1 | 111 | 23-APR-00
1 | 5 | 1 | 197247 | GULSU1 | 111 | 31-MAY-01
1 | 6 | 1 | 204492 | GULSU1 | 111 | 04-JUN-01
1 | 7 | 1 | 211649 | GULSU1 | 111 | 12-JUN-01
1 | 8 | 1 | 224614 | GULSU1 | 111 | 30-APR-03
1 | 9 | 1 | 363415 | GULSU1 | 111 | 24-SEP-04
2 | 1 | 1 | 9592 | GULSU2 | 112 | 01-NOV-99
2 | 2 | 1 | 17108 | GULSU2 | 112 | 18-NOV-99
2 | 3 | 1 | 164523 | GULSU2 | 112 | 21-MAR-00
2 | 4 | 1 | 177620 | GULSU2 | 112 | 23-APR-00
2 | 5 | 1 | 197248 | GULSU2 | 112 | 31-MAY-01
2 | 6 | 1 | 204493 | GULSU2 | 112 | 04-JUN-01
2 | 7 | 1 | 211650 | GULSU2 | 112 | 12-JUN-01
2 | 8 | 2 | 224615 | GULSU1 | 112 | 30-APR-03
2 | 9 | 2 | 287725 | GULSU1 | 112 | 25-MAR-04


How may i do this with a single select statement???

Thanks, BR...

Comments

Processing
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Oct 25 2007
Added on Sep 27 2007
2 comments
3,469 views