How to retrieve comma seperated vales in the same column in Oracle SQL

Dear Members
Please provide me the solution to the below question
Oracle table
Ename Product
A 1,2,3
B 1,2,3
Product column has data like that only separated by commas
Output should be like this.
Ename, Product
A 1
A 2
A 3
B 1
B 2
B 3
Can we get the above output using Just Oracle SQL select statement?.
I have tried in Google I got an answer in SQL server,it has something called “Cross apply split” function, I am not sure in Oracle.

876639 wrote:
Thanks for your answer, it's perfectly worked.Efficiency wise it is quite costly solution it builds hierarchy betwenn every row/level. As a result we end up building huge hierarchy while we need just few rows:
with t as (
           select 'A' ename, '1' product from dual union
           select 'B', '1,2' from dual union
           select 'C', '1,2,3' from dual union
           select 'D', '1,2,3,4' from dual union
           select 'E', '1,2,3,4,5' from dual
SELECT count(*),
       count(distinct ename || regexp_substr (product, '[^,]+', 1, level)) 
   FROM t
   CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (product, '[^,]+'))  + 1
  COUNT(*) COUNT(DISTINCTENAME||REGEXP_SUBSTR(PRODUCT,'[^,]+',1,LEVEL))
       325                                                           15
SQL> As you can see, code builds 325 row hierarchy while returns just 15 rows. The following solution builds exactly as many rows as we need:
with t as (
           select 'A' ename, '1' product from dual union
           select 'B', '1,2' from dual union
           select 'C', '1,2,3' from dual union
           select 'D', '1,2,3,4' from dual union
           select 'E', '1,2,3,4,5' from dual
SELECT  count(*),
        count(ename || regexp_substr(product,'[^,]+',1,column_value))
  FROM  t,
        table(
              cast(
                   multiset(
                            select  level
                              from  dual
                              connect by level <= length(product) - length(replace(product,',')) + 1
                   as sys.OdciNumberList
  COUNT(*) COUNT(ENAME||REGEXP_SUBSTR(PRODUCT,'[^,]+',1,COLUMN_VALUE))
        15                                                          15
with t as (
           select 'A' ename, '1' product from dual union
           select 'B', '1,2' from dual union
           select 'C', '1,2,3' from dual union
           select 'D', '1,2,3,4' from dual union
           select 'E', '1,2,3,4,5' from dual
SELECT  ename,
        regexp_substr(product,'[^,]+',1,column_value)
  FROM  t,
        table(
              cast(
                   multiset(
                            select  level
                              from  dual
                              connect by level <= length(product) - length(replace(product,',')) + 1
                   as sys.OdciNumberList
E REGEXP_SU
A 1
B 1
B 2
C 1
C 2
C 3
D 1
D 2
D 3
D 4
E 1
E REGEXP_SU
E 2
E 3
E 4
E 5
15 rows selected.
SQL> SY.

Similar Messages

  • How to handle Multiple date formats for the same date field in SQL*Loader

    Dear All,
    I got a requirement where I need to get data from a text file and insert the same into oracle table.
    I am using SQL*Loader to populate the data from the text file into my table.
    The file has one field where I am expecting date date data in multiple formats, like dd/mon/yyyy, yyyy/dd/mon, yyyy/mon/dd, ,mm/dd/yyyy, mon/dd/yyyy.
    While using SQL*Loader, I can see Loading is failing for records where we have formats like yyyy/dd/mon, yyyy/mon/dd, mon/dd/yyyy.
    Is there any way in SQL*Loader where we can mention all these date formats so that this date data should go smoothly into the underlying date column in the table.
    Appreciate your response on this.
    Thanks,
    Madhu K.

    The point being made was, are you sure that you can uniquely identify a date format from the value you receieve? Are you sure that the data stored is only of a particular limited set of formats?
    e.g. if you had a value of '07/08/03' how do you know what format that is?
    It could be...
    7th August 2003 (thus assuming it's DD/MM/RR format)
    or
    8th July 2003 (thus assuming it's MM/DD/RR format)
    or
    3rd August 2007 (thus assuming it's RR/MM/DD format)
    or
    8th March 2007 (thus assuming it's RR/DD/MM format)
    or even more obscurely...
    3rd July 2008 (MM/RR/DD)
    or
    7th March 2008 (DD/RR/MM)
    Do you have any information to tell you what formats are valid that would allow you to be specific and know what date format is meant?
    This is a classic example of why dates should be stored on the database using DATE datatype and not VARCHAR2. It can lead to corruption of data, especially if the date can be entered in any format a user wishes.

  • How can I give different Editors in the same column for the jTable?

    I am having a JTable with 2 columns and 10 rows. In the 2nd column, for the first 2 rows
    I need to show JCheckBox, for nect 2 JComboBox and for remaining JTextField as the editor.
    How can I do this. Thanks in Advance.

    Remember, the parent class of a cell renderer does NOT have to be a Component itself. Most do simply because the end result of the getCellRenderer call is the component itself.
    Create 3 cell renderers, one based off of the checkbox, one based off the combobox, one based off of Object. The Object based one will hold instances of the other two renderers and will be the actual renderer supplied to the JTable. When called, based on the row, it will forward the call to the to the appropriate renderer and return the result of the call.
    Technically, the internal components do not NEED to be renderers themselves, but doing so makes it a lot easier to test them independently of the combined renderer.

  • How to make comma seperated file

    hi
    I have a select statement that looks like below. I want to make comma seperated file for the selected columns. How to write it?
    SELECT MM.DAL_NUMBER,
    '19-NOV-2009' as WSS_CE,
    CPN_INT,
    TRADE_DATE,
    MX_DATE "LAST_DATE",
    CUSTOMER_SPECIF CUST_GID,
    NAME_SHORT CUST_NAME_SHORT
    from my_table;
    if you could provide me with exact query.
    Thanks

    Slightly more generic approach...
    As sys user:
    CREATE OR REPLACE DIRECTORY TEST_DIR AS '\tmp\myfiles'
    GRANT READ, WRITE ON DIRECTORY TEST_DIR TO myuser
    /As myuser:
    CREATE OR REPLACE PROCEDURE run_query(p_sql IN VARCHAR2
                                         ,p_dir IN VARCHAR2
                                         ,p_header_file IN VARCHAR2
                                         ,p_data_file IN VARCHAR2 := NULL) IS
      v_finaltxt  VARCHAR2(4000);
      v_v_val     VARCHAR2(4000);
      v_n_val     NUMBER;
      v_d_val     DATE;
      v_ret       NUMBER;
      c           NUMBER;
      d           NUMBER;
      col_cnt     INTEGER;
      f           BOOLEAN;
      rec_tab     DBMS_SQL.DESC_TAB;
      col_num     NUMBER;
      v_fh        UTL_FILE.FILE_TYPE;
      v_samefile  BOOLEAN := (NVL(p_data_file,p_header_file) = p_header_file);
    BEGIN
      c := DBMS_SQL.OPEN_CURSOR;
      DBMS_SQL.PARSE(c, p_sql, DBMS_SQL.NATIVE);
      d := DBMS_SQL.EXECUTE(c);
      DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
      FOR j in 1..col_cnt
      LOOP
        CASE rec_tab(j).col_type
          WHEN 1 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
          WHEN 2 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_n_val);
          WHEN 12 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_d_val);
        ELSE
          DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
        END CASE;
      END LOOP;
      -- This part outputs the HEADER
      v_fh := UTL_FILE.FOPEN(upper(p_dir),p_header_file,'w',32767);
      FOR j in 1..col_cnt
      LOOP
        v_finaltxt := ltrim(v_finaltxt||','||lower(rec_tab(j).col_name),',');
      END LOOP;
      --  DBMS_OUTPUT.PUT_LINE(v_finaltxt);
      UTL_FILE.PUT_LINE(v_fh, v_finaltxt);
      IF NOT v_samefile THEN
        UTL_FILE.FCLOSE(v_fh);
      END IF;
      -- This part outputs the DATA
      IF NOT v_samefile THEN
        v_fh := UTL_FILE.FOPEN(upper(p_dir),p_data_file,'w',32767);
      END IF;
      LOOP
        v_ret := DBMS_SQL.FETCH_ROWS(c);
        EXIT WHEN v_ret = 0;
        v_finaltxt := NULL;
        FOR j in 1..col_cnt
        LOOP
          CASE rec_tab(j).col_type
            WHEN 1 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_v_val);
                        v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');
            WHEN 2 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_n_val);
                        v_finaltxt := ltrim(v_finaltxt||','||v_n_val,',');
            WHEN 12 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_d_val);
                        v_finaltxt := ltrim(v_finaltxt||','||to_char(v_d_val,'DD/MM/YYYY HH24:MI:SS'),',');
          ELSE
            v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');
          END CASE;
        END LOOP;
      --  DBMS_OUTPUT.PUT_LINE(v_finaltxt);
        UTL_FILE.PUT_LINE(v_fh, v_finaltxt);
      END LOOP;
      UTL_FILE.FCLOSE(v_fh);
      DBMS_SQL.CLOSE_CURSOR(c);
    END;This allows for the header row and the data to be written to seperate files if required.
    e.g.
    SQL> exec run_query('select * from emp','TEST_DIR','output.txt');
    PL/SQL procedure successfully completed.Output.txt file contains:
    empno,ename,job,mgr,hiredate,sal,comm,deptno
    7369,"SMITH","CLERK",7902,17/12/1980 00:00:00,800,,20
    7499,"ALLEN","SALESMAN",7698,20/02/1981 00:00:00,1600,300,30
    7521,"WARD","SALESMAN",7698,22/02/1981 00:00:00,1250,500,30
    7566,"JONES","MANAGER",7839,02/04/1981 00:00:00,2975,,20
    7654,"MARTIN","SALESMAN",7698,28/09/1981 00:00:00,1250,1400,30
    7698,"BLAKE","MANAGER",7839,01/05/1981 00:00:00,2850,,30
    7782,"CLARK","MANAGER",7839,09/06/1981 00:00:00,2450,,10
    7788,"SCOTT","ANALYST",7566,19/04/1987 00:00:00,3000,,20
    7839,"KING","PRESIDENT",,17/11/1981 00:00:00,5000,,10
    7844,"TURNER","SALESMAN",7698,08/09/1981 00:00:00,1500,0,30
    7876,"ADAMS","CLERK",7788,23/05/1987 00:00:00,1100,,20
    7900,"JAMES","CLERK",7698,03/12/1981 00:00:00,950,,30
    7902,"FORD","ANALYST",7566,03/12/1981 00:00:00,3000,,20
    7934,"MILLER","CLERK",7782,23/01/1982 00:00:00,1300,,10The procedure allows for the header and data to go to seperate files if required. Just specifying the "header" filename will put the header and data in the one file.
    Adapt to output different datatypes and styles are required.

  • Keyfigs in the same columns without distrubing eachone

    I am a newbie in the BI..and i have some problem.
    how can we get two KF in the same column?
    i have 52 weeks in the column and along with that i need amount column also.how can it possible.i dont want to see weeks at amount.
    .............||<u>|amount||quantity|week 1| week 2|(up to 52 weeks) |total days|</u>
    <u>employee</u>||
    i took employee as the char and amount,quantity as kf.
    but the problem is when i am executing the Query,weeks are comeing along with amount also.i need weeks with quantity only.
    could you people please give some clues?
    thanks alot

    Suresh,
    Do you need to display the weeks in a column?  If you only want the total there, pull the Week characteristic out of there and leave it in the Free Characteristic section.
    If you do need the weeks there for another key figure, you are going to have to create a structure - each week will have the key figure within that selection and then a selection with all your weeks selected as a range and the Amount key figure.
    Regards
    Gill

  • How to place an image in database and how to retrieve and display it in the front end

    how to place an image in database and how to retrieve and display it in the front end
    and to place an image in database and retrieve the image from database using xml
    please,help me out.

    Create a table with a Long RAW Datatype column for storing the Image Column Data.
    Create the form based on the table , which by defaults the column with LONG RAW atatype to a Image Item.
    You can use Forms Built in function READ_IMAGE_FILE to read a Image file stored on the file system in to the image item.
    A save on the form saves the image in the Image item in the long raw column.

  • How can 2 people use itunes in the same household? we both have iphone 4 and separate id but the same itunes? pleasehelp

           how can two people use itunes in the same household? i had a iphone before so alreday had an itunes account now me and my husband have upgraded and we now both have them. he has set up a username and i have mine yet when he logs in he seems to just get my account? please help

    Decide which iPhone will be keeping the current iCloud account.  On the one that will be changing accounts, if you have any photos in photo stream that are not in your camera roll or backed up somewhere else save these to your camera roll by opening the photo stream album in the thumbnail view, tapping Edit, then tap all the photos you want to save, tap Share and tap Save to Camera Roll.  If you are syncing Notes with iCloud, you'll also have to email your notes to yourself so they can be recreated in the new account as they cannot be migrated.
    Once this is done, go to Settings>iCloud, scroll to the bottom and tap Delete Account.  (This will only delete the account from this phone, not from iCloud.  The phone that will be keeping the account will not be effected by this.)  When prompted about what to do with the iCloud data, be sure to select Keep On My iPhone.  Next, set up a new iCloud account using a different Apple ID (if you don't have one, tap Get a Free Apple ID at the bottom).  Then turn iCloud data syncing for contacts, etc. back to On, and when prompted about merging with iCloud, choose Merge.  This will upload the data to the new account.
    Finally, to un-merge the data you will then have to go to icloud.com on your computer and sign into each iCloud account separately and manually delete the data you don't want (such as deleting your wife's data from your account, and vice versa).

  • How can I save multiple titles under the same DVD?

    I use HandBrake to rip DVD's into iTunes. How can I save multiple titles under the same DVD? For instance, I have a Jimi Hendrix documentary that comes with special features, such as concert performances. I would like to have the main feature and the special features saved in my iTunes under the same title, perhaps as different 'tracks' (kind of like how different songs can be saved under the same album).
    Is there a way for me to do this, or am I chasing phantoms?

    *This response is for iPhoto 11 (v9). If you're using an earlier version, please post back and let us know. Troubleshooting steps are not the same for different versions. To find out which iPhoto you have: iPhoto Menu -> About iPhoto)*
    Duplicate the photo first. (Photos -> Duplicate). This means that you will have multiple copies of the master as well as the edited version.
    If you use versions like this often and wish to have only one master then you can do this with Aperture.
    Regards
    TD

  • When importing songs of a same album but different artist iTunes will separate the artists. How can I bring all together in the same album?

    When importing songs of a same album but different artist iTunes will separate the artists. How can I bring all together in the same album?

    Generally setting a common Album Artist will fix things. For deeper problems see Grouping tracks into albums.
    tt2

  • I am changing from Word to Pages. I have created my custom template with all my styles etc and that is what comes up when I go for a New Document. Fine. How do I get it to use the same Custom Template when I use Pages to open a Word document?

    I am changing from Word to Pages. I have created my custom template with all my styles etc and that is what comes up when I go for a New Document. Fine. How do I get it to use the same Custom Template when I use Pages to open a Word document?

    The template is a document in itself, it is not applied to an existing document whether it is a Pages document or a Word document converted to a Pages document.
    You would need to either copy and paste content, using existing styles, or apply the styles to the converted Word document.
    You can Import the Styles from an existing document and those imported Styles can be used to override the current document's styles:
    Menu > Format > Import Styles
    The process is simplified if the styles use the same names, otherwise you will need to delete the style you don't want and replace it with the one that you do want when asked, then the substitution is pretty straightforward.
    Peter

  • How can I make different catalogs from the same image

    How can I make different catalogs from the same image where that image has been changed in some way between the catalogs. For instance if I wanted to have a catalogs for cropped images and have 3 catalogs one for 4x6 , 5x7 and 8x10 cropping. When I tried this , if I changed a file in one catalog that same image in the other would change also.

    Do not confuse the creation of the crops and the display in collections per crop ratio.
    Of course one virtual copy (VC) per crop ratio is needed. If the same image should be cropped in all 3 mentioned ratios there would be 3 VCs.
    The OP asked how to have/see a set of same-crop-ratios.
    After having created the virtual copies for whatever crop ratio he wants, the way to display this result in the fashion asked for is via smart collections, provided they can be found. Without a plugin the naming of the VC with the crop ratio applied is a straight way to achieve that.
    IF the wish is to get new crops automatically added. (See my answers 2+3)
    IF the wish is to creat static collections per crop ratio for a certain set of images, I'd go as follows:
    1. Select all images you want to have cropped in that way,.
    2. With this selection click on the + to add another collection and fill the dialog box like this:
    Then navigate into this newly created selection and perform the 4x6 crop - according to taste individually or by synchronizing the first crop.
    Cornelia

  • How do I stop mail from looping the same emails into inbox?

    How do I stop mail from looping the same emails into the inbox over and over again? It does the same thing with deleted messages that keep showing up again and again in multiples even after deleting them. I have made sure my server settings in all email accounts are set to delete immediately once I delete them on my MacBook Pro/IPhone. This issue has severely compromised the efficiency of Mail on my MacBook. Thanks for any help you're able to give me.

    I have tried that but it does not fix the problem.
    The "card" group is not a previous recipient.
    Although not available for editing in Contacts, it is a valid group showing up in the "To" field of Messages, Mail, or any app using the AddressBook.
    Its associated file is automatically created in:
    ~/Library/ApplicationSupport/AddressBook/Sources/<hexaFolder>/MetaData/<hexa>ABG roup.abcdg
    This is why it also shows up in the Spotlight results...
    If I manually remove this file, it gets recreated...
    If I turn off the syncing through iCloud, the entry gets deleted. If I turn it up, it comes back!

  • Solaris 11 IPS:  How do you post multiple versions of the same package?

    How do you post multiple versions of the same software package on a single IPS instance(port)? Oracle was able to do it here with versions 151 and 175 of S11:
    http://pkg.oracle.com/solaris/release/
    Unfortunately, based on my searches, no where in the documentation (http://www.oracle.com/technetwork/server-storage/solaris11/technologies/ips-323421.html) does it explain to the development community how this is done. The best I can do is create pkg repo instances on different ports to host each different software version.
    We are trying to deploy an IPS repository for our drivers and utilities that our customers can link to and pull updates from. We have been able to post a software package to the repository using the command:
    pkgsend publish -s http://localhost:1234 -d ./ Appv1.p5m
    This posts the package on the IPS repository instance at port 1234 on the server. However, we would like to post multiple versions of the package on the server at the same URL. Why the same URL? So that our customers and end-users need only point to a single URL to pull down our software rather than having to add a new URL to the publisher list each time we have an update. We want at least 5 of the previous software versions to be available on the server. Posting each version of the application or driver on a different IPS instance on a different port will require customers to add multiple URLs to their publisher list and they also will not be able to initiate remote scans for updates.
    Has anybody been able to do this? Is any documentation forthcoming?
    Edited by: user13489824 on Jun 25, 2012 10:17 AM

    dhduvall: Thanks for your response. Yes, one would think that as long as the version numbers are different, you should be able to accumulate multiple versions of a package in a repository. It looks like Oracle has done it in their S11 repository unfortunately, as far as I know, they have not shared the steps on how to do this. I would like to publish two versions of the same package. I.E. two different manifests with two different fmri.pkg version strings and two different binaries.
    If I publish one package after another like this:
    pkgsend publish -s http://localhost:1234 Appv1.p5m
    pkgsend publish -s http://localhost:1234 Appv2.p5m
    Then only the second package shows up in the repository, as if it over-wrote the first one.
    Running pkgsend with two manifest, like this:
    pkgsend publish -s http://localhost:1234 Appv1.p5m Appv2.p5m
    Will cause pkgsend to combine the packages and manifests as if they were a single package... not what I am trying to do.
    Both approaches are complete without errors but neither achieves what I am trying to do.
    alan.pae: Thank you. Unfortunately, the link didn't really help. I've read Oracle's white papers and IPS developer guide so I'm familiar with the topics covered.
    Lex: Yes, I know. I specified the versions in the pkg.fmri value string.

  • How do I have multiple accounts on the same computer

    how do I have multiple accounts on the same computer? The idea of ", hold down the option (on a Mac)/ shift (on a PC) key each time you start iTunes" does not seem to work for me. Thanks.

    Create multiple Windows User Profile with each managing his own iTunes account and library.
    To create a user account on Windows 7:
    To open User Accounts, click the Start button , click Control Panel, under 'User Accounts and Family Safety', select Add or Remove User Accounts.
    Click Create a new account.
    Type the name you want to give the user account, click an account type(make sure to give Administrator), and then click Create Account.

  • My phone has the correct AppleID in the in settings section but asks me to login with one that isn't mine.  I deleted the ID from my itunes but it still won't let me login with mine. How do I get my iPhone on the same page?

    My iphone4 has the correct Apple ID in the information settings section and asks me to login to my ID most of the time but when I try to update my apps, it asks me to login with an ID that isn't mine.  I deleted the wrong ID from my itunes but it still won't let me login with my own ID to update apps.  How do I get my iphone on the same page?

    How did you obtain these apps? All apps are DRM protected & tied forever to the account used to originally obtain them. They cannot be transferred to another Apple ID(account), nor can they be updated using any Apple ID other than the one that was used to originally obtain them.

Maybe you are looking for

  • How to access .dmp data with the Instant Client?

    I'm a total beginner, and am trying to access a .Dmp database. I have installed (on Linux i386): Instant Client Basic 11.2 + SDK + SQLPlus I'm aware that I have to further set the environment variables ORACLE_HOME and LD_LIBRARY_PATH, and think I kno

  • DMZ Anchor WLC setup for Wireless Guest Access

    I have the following setup. A DMZ WLC 4402 connected to firewall DMZ interface in 10.10.73.0/24 network. An Inside WLC 2106 connected to firewall Inside interface in 10.10.71.0/24 network. Both WLCs are running the same 4.2.176 code. DMZ WLC is ancho

  • BADI for field mapping

    Hi, i am using cProjects and with cProjects i am creating a new project and the same data i want to update in project system in ECC 6.0. As in cProjects 'Project type' field is available and i want to map this Project type field with 'Project profile

  • Item Cost calculation

    Hi to all,             My problem is:             Item Cost is calculate on the basis of unit price, tax is not include. I want that Item Cost should be calculated on the basis of actual price+Tax amount. Please if anyone can help me on this. thanks

  • [svn:osmf:] 13455: WebPlayer: Fixing full screen button not showing.

    Revision: 13455 Revision: 13455 Author:   [email protected] Date:     2010-01-12 10:59:01 -0800 (Tue, 12 Jan 2010) Log Message: WebPlayer: Fixing full screen button not showing. Modified Paths:     osmf/trunk/libs/ChromeLibrary/src/org/osmf/chrome/co