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!

Sql to normalize data in a table

Daniel TaitAug 21 2013 — edited Aug 21 2013

I have a table which has a column called 'species' this lists the species present at particular sites. At the moment this is a comma separated list for each site:

Create table species_test (
site_name number,
species varchar2(255));

insert into species_test values (1, 'Gallirallus_philippensis_assimilis, Botaurus_poiciloptilus, Cyclosorus_interruptus');
insert into species_test values (2, 'Pomaderris_rugosa');
insert into species_test values (3, 'Ptisana_salicina, Anguilla_dieffenbachii');

What I want to do is normalize this data by having each species on a separate row so that it looks like:

Create table species_testv2 (
site_name number,
species varchar2(255));

insert into species_testv2 values (1, 'Gallirallus_philippensis_assimilis');
insert into species_testv2 values (1, 'Botaurus_poiciloptilus');
insert into species_testv2 values (1, 'Cyclosorus_interruptus');
insert into species_testv2 values (2, 'Pomaderris_rugosa');
insert into species_testv2 values (3, 'Ptisana_salicina');
insert into species_testv2 values (3, 'Anguilla_dieffenbachii');

Is this possible to do this with a query? At the moment I'm going through and normalizing it manually. This is just a sample - the actual dataset is much larger.

Any help would be much appreciated.

This post has been answered by Frank Kulash on Aug 21 2013
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 18 2013
Added on Aug 21 2013
7 comments
4,028 views