Convert  multiple rows into single rows for the respective index name

Dear Experts,
                         I want to convert  multiple rows into single rows for the respective index name,
                        Here is my query.
SELECT user_tables.table_name, user_indexes.index_name, user_ind_columns.column_name
FROM user_tables
JOIN user_indexes on user_indexes.table_name = user_tables.table_name
join USER_IND_COLUMNS on USER_INDEXES.INDEX_NAME = USER_IND_COLUMNS.INDEX_NAME
where user_indexes.index_name not like '%PK%' AND user_ind_columns.column_name NOT LIKE '%SYS%'
ORDER BY user_tables.table_name,user_indexes.index_name;
Result of previous query
TABLE_NAME
INDEX_NAME
COLUMN_NAME
T1
IDX_ACCNTYPCFG1
ENABLE_SERVICE
T1
IDX_ACCTTYPCFG1
ACC_CODE
T1
IDX_ACCTTYPCFG1
ACCTYPE
T2
IDX_ACCTTYPCFGAPP1
ACCTYPE
T3
IDX_ACTLG1
MOBILE_NO
T3
IDX_ACTLG1
ID
Desired output required is
TABLE_NAME
INDEX_NAME
COLUMN_NAME
T1
IDX_ACCNTYPCFG1
ENABLE_SERVICE,ACC_CODE,ACCTYPE
T2
IDX_ACCTTYPCFGAPP1
ACCTYPE
T3
IDX_ACTLG1
ACCTYPE,MOBILE_NO
please help.

Maybe
with
user_tables as
(select 'T1' table_name,'IDX_ACCNTYPCFG1' index_name,'ENABLE_SERVICE' column_name from dual union all
select 'T1','IDX_ACCTTYPCFG1','ACC_CODE' from dual union all
select 'T1','IDX_ACCTTYPCFG1','ACCTYPE' from dual union all
select 'T2','IDX_ACCTTYPCFGAPP1','ACCTYPE' from dual union all
select 'T3','IDX_ACTLG1','MOBILE_NO' from dual union all
select 'T3','IDX_ACTLG1','ID' from dual
select table_name,
       case index_name when 'IDX_ACCNTYPCFG1' then 'IDX_ACCTTYPCFG1' else index_name end index_name,
       listagg(case column_name when 'ID' then 'ACCTYPE' else column_name end,',') within group (order by null) column_name
  from user_tables
group by table_name,case index_name when 'IDX_ACCNTYPCFG1' then 'IDX_ACCTTYPCFG1' else index_name end
TABLE_NAME
INDEX_NAME
COLUMN_NAME
T1
IDX_ACCTTYPCFG1
ACCTYPE,ACC_CODE,ENABLE_SERVICE
T2
IDX_ACCTTYPCFGAPP1
ACCTYPE
T3
IDX_ACTLG1
ACCTYPE,MOBILE_NO
Regards
Etbin

Similar Messages

  • Merge multiple rows into single row (but multiple columns)

    How to merge multiple rows into single row (but multiple columns) efficiently.
    For example
    IDVal IDDesc IdNum Id_Information_Type Attribute_1 Attribute_2 Attribute_3 Attribute_4 Attribute_5
    23 asdc 1 Location USA NM ABQ Four Seasons 87106
    23 asdc 1 Stats 2300 91.7 8.2 85432
    23 asdc 1 Audit 1996 June 17 1200
    65 affc 2 Location USA TX AUS Hilton 92305
    65 affc 2 Stats 5510 42.7 46 9999
    65 affc 2 Audit 1996 July 172 1100
    where different attributes mean different thing for each Information_type.
    For example for Information_Type=Location
    Attribute_1 means Country
    Attribute_2 means State and so on.
    For example for Information_Type=Stats
    Attribute_1 means Population
    Attribute_2 means American Ethnicity percentage and so on.
    I want to create a view that shows like below:
    IDVal IDDesc IDNum Country State City Hotel ZipCode Population American% Other% Area Audit Year AuditMonth Audit Type AuditTime
    23 asdc 1 USA NM ABQ FourSeasons 87106 2300 91.7 46 85432 1996 June 17 1200
    65 affc 2 USA TX AUS Hilton 92305 5510 42.7 46 9999 1996 July 172 1100
    Thanks

    Hi,
    That's called Pivoting . The forum FAQ has a section on this subject: {message:id=9360005}
    I hope this answers your question.
    If not, post your best attempt, along with a little sample data (CREATE TABLE and INSERT statements, relevant columns only), and also post the results you want from that data. (You did post the results you wanted, but they're very hard to read because they're not formatted. Use \ tags, as described in the forum FAQ, below.)
    Explain, using specific examples, how you get the results you want from the data given.
    Always say which version of Oracle you're using (e.g., 11.2.0.2.0).  This is always important, but especially so with pivots.
    See the forum FAQ {message:id=9360002}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Combining Multiple Rows into single row with multple columns

    Hi Experts,
    I have the following requirement, kindly help me.
    I have data in my table like below.
    ID NAME DEPT
    1 Sam 10
    1 Sam 20
    2 alex     30
    2 alex 40
    2 alex 50
    3 vinod 60
    3 vinod 70
    I want to show the same data into single row with dynamically generating columns for DEPT. I want show like below.
    ID NAME DEPT1 DEPT2 DEPT3
    1 Sam 10 20
    2 alex 30 40 50
    3 vinod 60 70
    It's urgent requirement, kindly help me.
    Thanks in advance.

    Right I've had my drink, so what was this "urgent" question then?
    798616 wrote:
    I have data in my table like below.
    ID NAME DEPT
    1 Sam 10
    1 Sam 20
    2 alex     30
    2 alex 40
    2 alex 50
    3 vinod 60
    3 vinod 70
    I want to show the same data into single row with dynamically generating columns for DEPT. I want show like below.Dynamic numbers of columns eh! Tricky.
    If you understand how SQL statements are executed it's along these lines...
    1. Open Cursor
    2. Parse SQL statement and determine columns
    3. Bind in any input values
    4. Fetch data
    5. Bind out values to columns
    6. Repeat step 3 until no more data
    7. Close cursor
    Now, you're expecting that you can determine the columns (step 2) from the fetched data (step 4 onwards). You can't. The SQL engine needs to know the expected columns before any data is fetched so, it can't base the number of columns on the data itself.
    If you need that requirement, you would need to query the data first and build up a dynamic query based on the data and then execute that dynamically built query to fetch the data and pivot it into those columns, which means that you have queried the data twice. Not good practice and not good (or simple) coding.
    What you're talking of doing is something that should be handled at the presentation/interface layer, not as part of the data fetch.
    Typically these sorts of things are handled most easily in report generation/writer tools such as Oracle Reports, Business Objects etc. where they fetch the data from the database and then process it to format it on the display, pivoting the results as required.
    It's not something that lends itself to be easily achieved in SQL. Yes, SQL can do pivoting of data quite easily, but NOT with a dynamic number of columns.
    If you were to specify that there is a maximum number of columns that you could get (rather than wanting it dynamic), then you can do it simply in SQL with the max-decode method...
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select deptno, ename, row_number() over (partition by deptno order by ename) as rn from emp)
      2  --
      3  select deptno
      4        ,max(decode(rn,1,ename)) as ename1
      5        ,max(decode(rn,2,ename)) as ename2
      6        ,max(decode(rn,3,ename)) as ename3
      7        ,max(decode(rn,4,ename)) as ename4
      8        ,max(decode(rn,5,ename)) as ename5
      9        ,max(decode(rn,6,ename)) as ename6
    10        ,max(decode(rn,7,ename)) as ename7
    11        ,max(decode(rn,8,ename)) as ename8
    12        ,max(decode(rn,9,ename)) as ename9
    13        ,max(decode(rn,10,ename)) as ename10
    14  from t
    15  group by deptno
    16* order by deptno
    SQL> /
        DEPTNO ENAME1     ENAME2     ENAME3     ENAME4     ENAME5     ENAME6     ENAME7     ENAME8     ENAME9     ENAME10
            10 CLARK      KING       MILLER
            20 ADAMS      FORD       JONES      SCOTT      SMITH
            30 ALLEN      BLAKE      JAMES      MARTIN     TURNER     WARD
    SQL>

  • Concatenation Multiple Rows into Single Row

    My select query is like wise
    ID Name
    1 Arthi
    2 Preethi
    3 Madhu
    4 Saranya
    Above i listed all the names using the select query. Now i have to combine this 4 rows in single row like
    Arthi,Preethi,Madhu,Saranya.
    Also this rows may be 5 or 50 too. So what are Names listed using select statement those should combine into one Single String.
    Help me pl

    Please post this in an appropriate forum;
    SQL and PL/SQL
    PL/SQL
    Community Feedback and Suggestions (Do Not Post Product-Related Questions Here)
    Adith

  • ALV - Multiple Rows into Single Row

    I have a requirement to display the ALV output from CDHDR&CDPOS tables here in the output i have 15 columns( Fields ) any changes im displaying in report output ,but if there is same time multiple columns will change im displaying as individual record instead of that i need to show as single row.
    in this output last three records have same time change but i have populated into three different columns i want to make it as SINGLE Row Record.
    Thanks!!

    We don't need script task for this. Use TSQL in the datasource. Refer below example
    DECLARE @TEMP TABLE(ID INT, [VALUE] NVARCHAR(30))
    INSERT INTO @TEMP VALUES(1 , 'MAZ')
    INSERT INTO @TEMP VALUES(1 , 'HON')
    INSERT INTO @TEMP VALUES(1 , 'FOR')
    INSERT INTO @TEMP VALUES(2 , 'JEEP')
    INSERT INTO @TEMP VALUES(2 , 'CHE')
    INSERT INTO @TEMP VALUES(3 , 'NIS')
    INSERT INTO @TEMP VALUES(4 , 'GMC')
    INSERT INTO @TEMP VALUES(4 , 'ACC')
    INSERT INTO @TEMP VALUES(4 , 'LEX')
    SELECT [id],
    Stuff((SELECT ',' + [VALUE]
    FROM @TEMP
    WHERE [id] = a.[id]
    FOR xml path('')), 1, 1, '') [VALUE]
    FROM @TEMP a
    GROUP BY [id]
    Regards, RSingh

  • Club Multiple rows into single row

    Hi,
    Iam facing this problem. Iam having this table client_details with columns as
    client -- group -- group_code
    1234 ------ X ------ code1
    1234 ------ Y ------ code2
    5555 ------ X ------ code3
    5555 ------ Y
    Now when I Query this table for a particular client, I require both the group_code for this client (it can be null also). But I require the result in a SINGLE row.
    The group will be either X or Y only.
    Can anyone help me out pls
    tnx
    Che

    oops
    SQL> select client, max(decode("GROUP", 'X', GROUP_CODE)) X, max(decode("GROUP", 'Y', GROUP_CODE)) Y from client_details group by client;
    CLIENT X Y
    1234 code1 code2
    5555 code3

  • Multiple Row into single Row

    Hi friends,
    I have one table like:
    10 SAM
    10 CAN
    10 MAN
    10 DEV
    20 MAL
    And want output like:
    10 SAM,CAN,MAN,DEV
    20 MAL
    i want to combine multiple rows into one within an existing view.
    What query will suit this to get this type of output.

    Please refer to this thread
    column values separated by ,

  • Combine 2 rows into single row?

    I have a table A which has information related to a process. For process completion there exist 2 rows. One has in it the total elapsed time, the time the entire process (which is multipart) begin and end time, but the columns related to rows processed are blank. Another related row has a start, end and elapsed time in it -- which I don't want -- but it has the row counts that I do want.
    I want to take these 2 rows, combine the relevant information into 1 row and insert that row into table B.
    I know I could insert from the first row and then come back and update it from the second row, but I hate having to read Table A twice. Any suggestions?

    Hello
    Is it not just a matter of using group by with sum? I may well have missed an important detail but here's a starting point:
    SQL>    CREATE TABLE DT_TEST_PROCESS
      2  (  id                              number,
      3     stage                   number,
      4     rows_processed  number,
      5     elapsed                 number
      6  )
      7  /
    Table created.
    SQL>
    SQL> INSERT INTO dt_test_process
      2  VALUES(1,1,100,0)
      3  /
    1 row created.
    SQL> INSERT INTO dt_test_process
      2  VALUES(1,2,0,10)
      3  /
    1 row created.
    SQL> INSERT INTO dt_test_process
      2  VALUES(2,1,1000,0)
      3  /
    1 row created.
    SQL> INSERT INTO dt_test_process
      2  VALUES(2,2,0,20)
      3  /
    1 row created.
    SQL>
    SQL> INSERT INTO dt_test_process
      2  VALUES(3,1,500,0)
      3  /
    1 row created.
    SQL> INSERT INTO dt_test_process
      2  VALUES(3,2,0,30)
      3  /
    1 row created.
    SQL>
    SQL> SELECT
      2     id,
      3     SUM(rows_processed) total_rows,
      4     SUM(elapsed) total_elapsed
      5  FROM
      6     dt_test_process
      7  GROUP BY
      8     id
      9  /
            ID TOTAL_ROWS TOTAL_ELAPSED
             1        100            10
             2       1000            20
             3        500            30
    SQL>
    SQL> CREATE TABLE dt_test_process_sum AS
      2  SELECT
      3     id,
      4     SUM(rows_processed) total_rows,
      5     SUM(elapsed) total_elapsed
      6  FROM
      7     dt_test_process
      8  GROUP BY
      9     id
    10  /
    Table created.HTH
    David

  • Function Module to convert multiple records into single record and vice-ver

    hi,
    i have a requirement to convert 10 records in an internal table to single record which should be passed
    to a single variable and store in the database.Kindly let me know is there any function module
    which meets my requirement. Also i need to do split one single record to 10 records each of
    say 65 length interval.
    kindly provide me if there is nay functinon module as such.
    I can do with ABAP-OOPS.Please suggest function module.

    I dont think such FM exists, but if you wanna code one it would be simple. Just loop through the internal table, keep concatenating the currently processing record into a long character variable to convert 10 records into one record.

  • Convert multiple delivery into single invoice

    Hi all,
    Kindly give solution to the below scenerio:
    The delivery is created each time the material is being send to the customer, But the customer requires a single invoice for all the delivery at the end of each month. How to address the scenerio.
    With regards,
    Afzal

    Hi ! Afzal,
    In the customer master record on the Sales Area Data, in the billing tab page, we have a field called Invoice dates.
    In that field, if you maintain a Factory Calender which has a set up of the dates, monthly one of the days, you can achieve your requirement.
    In the standard system for such a requirement Factory calender 'AM' is available. So fill in the field mentioned with Factory Calender 'AM - Agreement Monthly'.
    Now when you run Billing due list, all the deliveries that have been executed during the month will be available in billing due list only at the end of the month for this customer. Billing due list will be as regular for other customers. In this way, deliveries can be combined.
    Regards,
    PATHIK

  • Concatenate multiple rows into single row

    Hi I need to concatenate multiple rows,
    these are the rows I have
    Name
    Rnk
    Northshore
    1
    F3
    2
    Borderline
    3
    Mattoon
    3
    Vinemane
    5
    Arizona
    5
    WestShore
    5
    Schumburg
    5
    Wilson
    5
    This is how I would like it to look
    Name
    Rnk
    Northshore
    1
    F3
    2
    Borderline,   Mattoon
    3
    Vinemane,   Arizona, WestShore, Schumburg, Wilson
    5
    Thanks
    LISA86

    I meant is there a way to do it without using a table?
    LISA86
    We have not used any extra table. Ok, Try the below:
    Select distinct
    names= REPLACE(
    Select a.Name as [data()]
    From YOURTABLENAME A
    Where A.Rnk = b.Rnk
    Order by a.Name
    FOR XML PATH ('') ), ' ', ',') ,Rnk
    From YOURTABLENAME B Order by Rnk

  • Concatenating multiple rows into Single Row

    Hi Experts,
    I have got a new challenge in my project, but i am not aware of that one, please help me...
    i have a source like this
    col1    col2 
    1         a      
    1         b
    1         c
    my target would be like this
    col1     col2
    1          a,b,c
    i know how to achieve this in SQL( using LISTAGG( ) or wmconcat( ) ),  BUT........
    how i can load this into ODI Target table, pleae explain in detail ..
    Cheers
    Venkat

    Hi,
    You should be able to map your LISTAGG function on the target datastore as Col2, if you get in problems with group by , try this trick to supress the group by from ODI :
    http://www.business-intelligence-quotient.com/?p=905

  • Multiple rows into single row

    i have a table
    EID Code
    1 100
    1 101
    2 102
    1 104
    i want to get the output as Eid code code1 code2
    1 100 101 104
    2 102
    can anyone suggest on this?

    Not sure why so many are suggesting string aggregation techniques when the OP said...
    user10829046 wrote:
    i want to get the output as Eid code code1 code2
    1    100   101  104
    2    102 Clearly the output is required in seperate columns, not as one aggregated string.
    The solutions should relate to pivoting, not string aggregation.
    e.g.
    SQL> ed
    Wrote file afiedt.buf
      1  with t as
      2    (select 1 EID, 100 code from dual union all
      3    select 1 ,101 from dual union all
      4    select 2 ,102 from dual union all
      5    select 1 ,104 from dual)
      6  --
      7  --
      8  select eid
      9        ,max(decode(rn, 1, code)) as code1
    10        ,max(decode(rn, 2, code)) as code2
    11        ,max(decode(rn, 3, code)) as code3
    12  from (select eid, code, row_number() over (partition by eid order by code) as rn
    13        from t
    14       )
    15  group by eid
    16* order by 1
    SQL> /
           EID      CODE1      CODE2      CODE3
             1        100        101        104
             2        102
    SQL>

  • HOW TO COMBINE MULTIPLE ROWS INTO SINGLE ROWS

    Hi,
    I have a table with the following data:
    CASE-1
    TABLE -X
    RNO      FROM_SQN     TO_SQN     DATE
    ==========================================
    991      9           11     2010-01-01
    991      11           22     2010-01-01
    991      22           33     2010-01-01
    992      33           44     2010-01-01
    I want to see the result data as follows:
    RNO      FROM_SQN     TO_SQN     DATE
    ==========================================
    991      9           44     2010-01-01
    CASE-2
    TABLE -X
    RNO      FROM_SQN     TO_SQN     DATE
    ==========================================
    991      9           11     2010-01-01
    991      15           22     2010-01-01
    991      22           34     2010-01-01
    992      33           44     2010-01-01
    I want to see the result data as follows:
    RNO      FROM_SQN     TO_SQN     DATE
    ==========================================
    991      9           11     2010-01-01
    991      15           44     2010-01-01
    Please help me how to achieve this using SQL.
    Edited by: 986725 on Feb 7, 2013 2:36 AM

    with x as
    select 991 rno, 9 from_sqn ,11 to_sqn ,to_date('2010-01-01','yyyy-mm-dd') dt
    from dual union all
    select 991, 15 ,22 ,to_date('2010-01-01','yyyy-mm-dd') from dual union all
    select 991, 22 ,33 ,to_date('2010-01-01','yyyy-mm-dd') from dual union all
    select 991, 33 ,44 ,to_date('2010-01-01','yyyy-mm-dd') from dual
    x_with_group as
    select rno,from_sqn,to_sqn,dt,
           sum(sm) over(partition by rno,dt order by from_sqn) sm
    from
      select rno,from_sqn,to_sqn,dt,
             from_sqn-
              nvl(lag(to_sqn) over(partition by rno,dt order by from_sqn),0) sm
      from x
    select rno,min(from_sqn) from_sqn,max(to_sqn) to_sqn,dt
    from x_with_group
    group by rno,dt,sm
    order by rno,dt,from_sqn;
    RNO FROM_SQN TO_SQN DT       
    991        9     11 01-jan-2010
    991       15     44 01-jan-2010 Edited by: jeneesh on Feb 7, 2013 4:59 PM
    Assumed the date values are actually DATE types.
    Partition on DT and RNO can be amended as per your requirement..
    And assumed your sample data has a typo..
    If your data is correct..
    with x as
    select 991 rno, 9 from_sqn ,11 to_sqn ,to_date('2010-01-01','yyyy-mm-dd') dt
    from dual union all
    select 991, 15 ,22 ,to_date('2010-01-01','yyyy-mm-dd') from dual union all
    select 991, 22 ,33 ,to_date('2010-01-01','yyyy-mm-dd') from dual union all
    select 992, 33 ,44 ,to_date('2010-01-01','yyyy-mm-dd') from dual
    x_with_group as
    select rno,from_sqn,to_sqn,dt,
           sum(sm) over(order by from_sqn) sm
    from
      select rno,from_sqn,to_sqn,dt,
             from_sqn-
              nvl(lag(to_sqn) over(order by from_sqn),0) sm
      from x
    select min(rno) rno,min(from_sqn) from_sqn,max(to_sqn) to_sqn,min(dt) dt
    from x_with_group
    group by sm
    order by rno,dt,from_sqn;
    RNO FROM_SQN TO_SQN DT       
    991        9     11 01-jan-2010
    991       15     44 01-jan-2010 Edited by: jeneesh on Feb 7, 2013 5:14 PM

  • Merging Mulitiple Rows into single row

    Hi All ,
    I am loading master data to DSO from PSA .
    In my source i have got 5 records for specific keys
    Ex : Customer Divis  DistChan   Flag   Partner1    Partner Name
               1            PC     11          F1     11                    Jhon
               1            PC     11          F2     12                    Jone
               1            PC     11          F3     13                    Jack
               1            PC     11          F4     14                    Jame
    In Target i need to have data in single records
    Ex :
    : Customer Divis  DistChan   Flag   Partner1    Partner1 Name  Partner2     Partner2 Name  Partner3     Partner3 Name Partner4     Partner4 Name
          1            PC     11       F1             11                 Jhon              12                    Jone         13            jack                 14              Jame
    To achieve this i have tried with multiple Field routines , but data is not populating for all partner fields .
    Out put in DSO
    Customer Divis  DistChan   Flag   Partner1    Partner1 Name  Partner2     Partner2 Name  Partner3     Partner3 Name Partner4     Partner4 Name
          1            PC     11       F1             11                 Jhon       
    Any inputs why its not populating data for other fields ...is there other method to make this ??
    All your valuable inputs are appropriated
    Thanks in advance
    Regards ,
    Hari    

    Hi Raf /Rajesh ,
    Thank you so much for your replies
    @ Raf Rule group will update data into multiple rows ..
    @ Rajesh 
    1.In my data only Falg is  differentiator  .
    2.You need to create multiple Infoobjects to  meet your requirement. --May i know what do you mean ??, already i have created  multiple infoobjects for every partner w.r.t falg .
    Shown in above data
    3.Also you are not sure whether the data from source is always consistent like    5 distribution channels, 5  flags etc. - in data i will have only 5 different flag value -F1,F2,F3,F4,F5
    I am wondered to know why multiple field routines are not working ....
    Regards ,
    Hari

Maybe you are looking for

  • Blur Tool Problem - Random Lines (Adobe CC 2014.2.1 Release)

    Hi, I'm hoping that I haven't ticked some obscure option, but I have been using the Blur Tool in Photoshop CC for a while and after the most recent update have had issues with it - basically, when I try to use it to blur a specific area, it randomly

  • FM for week/date/time

    Hi ,           Is there any FM for to get a week from date and time. I am looking for a function module which gives a week starts from SUN 6PM and week ends SUN 6PM by passing a date. Thanks, Vind.

  • HT4759 is there any better way you can track stolen iphone 5 and iphone 5s rather than find my iphone?

    i have lost iphone 5 and iphone 5s within 4 month, its real sad coz there is no way i can track them, have been using icloud (find my iphone) for all these time but it doesn't show nothing helpful rather than my iphones are offline. i need help on th

  • Report data filters depending on user

    I have web intelligence report returning data grouped by departments. Is it possible to filter report data by department for user logged in depending on user's department? Thanks Edited by: Denis Sapunkov on Aug 19, 2010 12:58 PM

  • X60 only show "lenovo screen" upon startup

    Hi, When I start my X60 laptop it only show the "black Lenovo screen", and it never starts windows xp. Any ideas what might cause this behaviour.