Multiple parameters one row for each record

I have this query I want the user to be able to allow the user to enter multiple MATL_CODE_MOD as a parameters, the problem is that the GURMAIL table have multiple records one for each GURMAIL_MATL_CODE_MOD, so it will give me duplicates.. How I can code this, so I can allow the user to enter multiple MATL_CODE_MOD codes, and have only one row for each record...
and GURMAIL_MATL_CODE_MOD in ('8IBC','8IBD')
select
spriden_id,        
spbpers_name_suffix   name_suffix,
spbpers_name_prefix   name_prefix,
spriden_last_name     last_name,
spriden_first_name    first_name,
spriden_mi            mi,
srbrecr_term_code,
srbrecr_majr_code,
srbrecr_program_1,
saturn_midd.utlq.f_matl_code_type(srbrecr_pidm)
FROM
saturn.srbrecr,
saturn.spriden,
saturn.spbpers,
SATURN.SPRADDR,
general.gurmail
WHERE
spriden_pidm = srbrecr_pidm
and gurmail_pidm = spriden_pidm
AND spriden_pidm = spraddr_pidm 
--and srbrecr_term_code = decode(p_term  ,'%',SRBRECR_TERM_CODE,p_term)
and spbpers_pidm = spriden_pidm
and spriden_change_ind is null
--and gurmail_matl_code_mod
and SRBRECR_PROGRAM_1 = 'CMQ'
and GURMAIL_MATL_CODE_MOD in ('8IBC','8IBD')
--AND SPRADDR_ATYP_CODE = 'CM'
AND SPRADDR_STREET_LINE1 IS NOT NULL;

Hi,
SELECT DISTINCT ...will keep duplicate rows out of the result set.
Depending on your data, another possibility might be to not join the table that contains GURMAIL_MATL_CODE_MOD. Do an EXISTS sub-query on that table instead.
If you need more help, post some sample data from all the tables, and the results you want from that data.
Simplify, if possible, You can probably post a problem with 2 or 3 tables, each with 2 or 3 columns, that will have the same answer.
Edited by: Frank Kulash on Apr 22, 2009 2:28 PM

Similar Messages

  • How can I have one row for each object?

    Post Author: farnaz
    CA Forum: WebIntelligence Reporting
    I have 3 objcts that one of them is ID and second one is internal code and the third one is quantity.There is more than one value for each ID (becouse of internal code).I want to create a report based on ID and quantity (not based on internal code).I make a break on ID but the result shows me more than one row for each ID.so how can i have just one row for each ID?
    another question:
    how can I post screen shot of the results to my messag in forum?

    Post Author: jsanzone
    CA Forum: WebIntelligence Reporting
    farnaz:
    Have you tried to omit "internal code" from your grid?  In normal circumstances, if you have "ID" and "Quantity" on the grid, then WebI will on its own summarize Quantity based on ID, however, this is provided that Quantity has been set up as a measure (or metric).  The quickest way to tell if Quantity is a metric or not is to observe the color of its icon when you look at it in the data panel.  If it is a purple (or sometimes appears as pink or fuscia) dot, then it's a measure, but if it is a blue box then it is a dimension.  If you need Quantity as a measure then this will have to be modified at the universe (make it look like "sum(Quantity)" in the select phase of the object, and insure the object is defined as a number....

  • Get only one row for each kind of a column

    hi there!
    i have a little problem.
    I have a table with 10 columns. One of them has repeated values. My goal is to get all the rows with this column only one time for each values that it has.
    Ex:
    Col1 Col2 Col3
    A A A
    B B B
    C A C
    D C D
    Column 2 has repeated values. My goal is to get:
    A A A
    B B B
    D C D
    Only one time each value of column 2.
    Thanks guys! ;)

    SQL>  CREATE TABLE Tbl (col1 VARCHAR2(1),col2 VARCHAR2(1),col3 VARCHAR2(1));
    Table created.
    SQL> INSERT INTO Tbl VALUES ('A','A','A');
    1 row created.
    SQL>              INSERT INTO Tbl VALUES ('B','B','B');
    1 row created.
    SQL>              INSERT INTO Tbl VALUES ('C','A','C');
    1 row created.
    SQL>              INSERT INTO Tbl VALUES ('D','C','D');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> SELECT * FROM tbl t1
      2  WHERE
      3  rowid=(SELECT min(rowid)
      4         FROM tbl t2
      5         WHERE t1.col2=t2.col2);
    C C C
    A A A
    B B B
    D C D
    SQL> SELECT * FROM tbl t1
      2  WHERE
      3  rowid=(SELECT max(rowid)
      4         FROM tbl t2
      5         WHERE t1.col2=t2.col2);
    C C C
    B B B
    C A C
    D C DEdited by: Saubhik on Aug 3, 2010 1:31 AM

  • Multiple rows for each record

    I need to fit 20 columns to page width and to do so, I need to print each record on 2 rows. It's something like:
    Amt A Desc A Amt B Desc B ...
    Amt C Desc C Amt D Desc D ...
    999999 XXXXXX 999999 XXXXXXX
    999999 XXXXXX 999999 XXXXXXX
    999999 XXXXXX 999999 XXXXXXX
    999999 XXXXXX 999999 XXXXXXX
    Is this possible using Reports Builder?
    Mike

    If you use the Report Wizard, the wizard will automatically split the record in two (or more) lines if the line exceeds the paper width.
    You can do it manually too, of course, and place the fields on two lines instead of one.

  • Query for one row of each distinct column value

    lets say theres table employee with columns name, id, and title. How do you get one row for each distinct title. Whatever row it is doesnt matter as long as your result set covers every possible employee title. How can I do this? thanks

    Hi,
    I think you're asking about a Top-N Query .
    Since you didn't post a version of your table, I'll use scott.emp to illustrate.
    The following query shows exactly one row of output for each distinct job:
    WITH        got_r_num         AS
         SELECT     empno, ename, job
         ,     ROW_NUMBER () OVER ( PARTITION BY  job
                                   ORDER BY          ename
                                 ) AS r_num
         FROM    scott.emp
    SELECT     empno, ename, job
    FROM     got_r_num
    WHERE     r_num     = 1
    ;Output:
    `    EMPNO ENAME      JOB
          7902 FORD       ANALYST
          7876 ADAMS      CLERK
          7698 BLAKE      MANAGER
          7839 KING       PRESIDENT
          7499 ALLEN      SALESMANThe rows you see are actual rows from the table, not aggregates. That is, you can be certain that there is a row in the table with empno=7902, ename='FORD' and job='ANALYST'.
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only), and also post the results you want from that data.
    If the desired results are not unique, that is, if you'd be equally satisfied with a number of different result sets, then post a couple of examples from the same sample data.

  • Filter Oldest Entry for Each Record

    Post Author: Stephanie
    CA Forum: Desktop Intelligence Reporting
    I have a file that has multiple rows for each record, each with a different date. I would like to filter the report so that only the oldest entry for each record appears. Any suggestions? The report looks like this:
    Record 1     01/01/07
    Record 1     03/01/07
    Record 1     05/01/07
    Record 2     03/01/07
    Record 2     05/01/07
    Record 2     07/01/07
    I would like the report to show this:
    Record 1     01/01/07
    Record 2     03/01/07
    Thank you.

    Post Author: Stephanie
    CA Forum: Desktop Intelligence Reporting
    Thanks for the suggestion, but I had already tried that and I could not get it to work. I made a variable =Min(<Date>). When I removed the other date field, my report did look like this:
    Record 1     01/01/07
    Record 2     03/01/07
    The problem is that there are other fields in the entry that I need to display as well. Let me rephrase what my original file looks like.
    Record 1     01/01/07     Product A
    Record 1     03/01/07     Product H
    Record 1     05/01/07     Product K
    Record 2     03/01/07     Product Z
    Record 2     05/01/07     Product G
    Record 2     07/01/07     Product H
    I want the result to look like this:
    Record 1     01/01/07     Product A
    Record 2     03/01/07     Product Z
    When I use the min formula, I can't figure out a way to get the product information from the original record as well.

  • Displaying data in one row for  for 2 tables without relaiton

    I Have 2 tables without any relation and there is a common field and i want to display data like below
    table refdet
    1)
    refdt----------refbr----refamt----refcat
    10-aug-09---10-----34234-----101a
    10-aug-009--11----23245-----102a
    1-AUG-09----10----455.98----104A
    19-aug-09-12-----10000-------103B
    2) brdet
    trdt---------brn-----brtot-----------brcat
    11-aug09--10-----454000-------A
    09-aug-09-12-----550000-------B
    30-sep-09--10-----430000------A
    09-aug-09-11-----550000-------B
    i want to display data for each branch refdet.refbr = brdet.brn
    refdet
    Br10
    refdt----------refbr----refamt----refcat-----trdt---------brn-----brtot-----------brcat
    10-aug-09---10-----34234-----101a-------11-aug09--10-----454000-------A
    1-AUG-09----10----455.98----104A------30-sep-09--10-----430000------A
    Br 11
    10-aug-009--11----23245-----102a -------09-aug-09-11-----550000-------B
    Br12
    19-aug-09-12-----10000-------103B------09-aug-09----12-----550000-------B
    i tried the following query but its not working
    select distinct null as refdt,null as refbr,null as refamt,null as refcat,b.trdt,b.brn,b.brtot,b.brcat
    from brdet a,refdet b
    where a.refbr (+) = b.brn
    union all
    select distinct a.refdt,a.refbr,a.refamt,a.refcat,null as trdt,null as brn,null as brtot,null as brcat
    from brdet a,refdet b
    where a.refbr = b.brn (+)
    its not giving the records on each row for both side its creating separte rows for each records in both table.
    rgds
    jytohi
    -

    Hi jytohi,
    Please lean back for a moment and study your question. Ask yourself, is this a reasonable way to ask a question?
    Jopefully you'll reach the answer, "No it isn't, I need to.."
    1. Turn these
    1)
    refdt----------refbr----refamt----refcat
    2) brdet
    trdt---------brn-----brtot-----------brcatinto CREATE TABLE statements.
    2. Turn these
    10-aug-09---10-----34234-----101a
    10-aug-009--11----23245-----102a
    1-AUG-09----10----455.98----104A
    19-aug-09-12-----10000-------103B
    11-aug09--10-----454000-------A
    09-aug-09-12-----550000-------B
    30-sep-09--10-----430000------A
    09-aug-09-11-----550000-------Binto INSERT INTO statements
    3. Turn this
    refdet
    Br10
    refdt----------refbr----refamt----refcat-----trdt---------brn-----brtot-----------brcat
    10-aug-09---10-----34234-----101a-------11-aug09--10-----454000-------A
    1-AUG-09----10----455.98----104A------30-sep-09--10-----430000------A
    Br 11
    10-aug-009--11----23245-----102a -------09-aug-09-11-----550000-------B
    Br12
    19-aug-09-12-----10000-------103B------09-aug-09----12-----550000-------Binto properly formatted expected output, along with a reasonable explanation of why
    4. Turn this
    select distinct null as refdt,null as refbr,null as refamt,null as refcat,b.trdt,b.brn,b.brtot,b.brcat
    from brdet a,refdet b
    where a.refbr (+) = b.brn
    union all
    select distinct a.refdt,a.refbr,a.refamt,a.refcat,null as trdt,null as brn,null as brtot,null as brcat
    from brdet a,refdet b
    where a.refbr = b.brn (+)into a properly formatted query
    And last, put everything in into curly brackets {noformat}{noformat} to preserve formatting and blank space.
    Best regards
    Peter                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Comma separated column into rows for each value

    experts,
    I have a two column table. The second column has comma separated string values. How can I put the values separate for each comma separated and make one row for each value?
    example,
    column1 |   StringColumn
    s1          |   test, joy, happy
    s2          |  USA, England, India
    I want the result to be like below
    column1   |     StringColumn
    s1            |      test
    s1            |      joy
    s1            |      happy
    s2            |     USA
    s2            |     England
    s2            |     India
    thanks in advance
    ebro

    Hello ebro,
    See the following for a possible solution:
    http://gallery.technet.microsoft.com/scriptcenter/Convert-Small-CSV-Value-to-ffc142ff
    Olaf Helper
    [ Blog] [ Xing] [ MVP]

  • How to make RECORD for saving multiple rows for each employee..

    Hi,
    How can I create a record for saving multiple rows for each employee... (parent child relationship)
    I have created all required fields, then created a record, and then created a page. in that page i dragged-n-dropped a scroll area on that page and dropped all required fields from record into that scroll-area.
    whats is happening that its saving ONE (the first) record fine, but for the second record its not storing EMPLID for that row..
    Will I have to make some change at RECORD level ?
    OR Will i have to make some configuration in parent component ?

    Hi, the problem is solved. The record will be created in same way. just create more then one keys (allowing to make composite key in DB table)

  • Please help with an sql to show more than one records into single row for each student

    From the following data I would like to create an sql to get the information  as the following layout
    studentid,  firstTerm,  EnglishMark1,ScienceMark1,MathsMark1, Secondterm,EnglishMark2,ScienceMark2,MathsMark2,
    ThirdTerm,EnglishMark3,ScienceMark3,MathsMark3 // As single rows for each student
    Example
    1 First, 30,40,20,Sec,30,40,20,  simillarly next row for next row for another sudent. Please help to generate the sql for the same.
    Please help it would be very appreciate.
    With Thanks
    Pol
    polachan

    create table yourdata (studentid int, term varchar(10), section varchar(50), Mark int)
    insert into yourdata values
    (1,'First','Math',20),(1,'First','English',30),(1,'First','Science',40),
    (2,'First','Math',20),(2,'First','English',30),(2,'First','Science',40),
    (3,'First','Math',20),(3,'First','English',30),(3,'First','Science',40),
    (1,'Sec','Math',20),(1,'Sec','English',30),(1,'Sec','Science',40),
    (2,'Sec','Math',20),(2,'Sec','English',30),(2,'Sec','Science',40),
    (3,'Sec','Math',20),(3,'Sec','English',30),(3,'Sec','Science',40)
    Select studentid
    ,max(case when term='First' and section='English' Then Mark End) as EnglishMark1
    ,max(case when term='First' and section='Science' Then Mark End) as ScienceMark1
    ,max(case when term='First' and section='Math' Then Mark End) as MathMark1
    ,max(case when term='Sec' and section='English' Then Mark End) as EnglishMark2
    ,max(case when term='Sec' and section='Science' Then Mark End) as ScienceMark2
    ,max(case when term='Sec' and section='Math' Then Mark End) as MathMark2
    ,max(case when term='Third' and section='English' Then Mark End) as EnglishMark3
    ,max(case when term='Third' and section='Science' Then Mark End) as ScienceMark3
    ,max(case when term='Third' and section='Math' Then Mark End) as MathMark3
    From yourdata
    Group by studentid
    drop table yourdata

  • Display only one row for distinct columns and with multiple rows their valu

    Hi,
    I have a table having some similar rows for some columns and multiple different rows for some other columns
    i.e
    o_mobile_no o_doc_date o_status d_mobile_no d_doc_date d_status
    9825000111 01-jan-06 'a' 980515464 01-feb-06 c
    9825000111 01-jan-06 'a' 991543154 02-feb-06 d
    9825000111 01-jan-06 'a' 154845545 10-mar-06 a
    What i want is to display only one row for above distinct row along with multiple non distinct colums
    ie
    o_mobile_no o_doc_date o_status d_mobile_no d_doc_date d_status
    9825000111 01-jan-06 'a' 980515464 01-feb-06 c
    991543154 02-feb-06 d
    154845545 10-mar-06 a
    regards,
    Kumar

    Re: SQL Help

  • FillBy always fills in the same row in data grid view. How to make it fill in a new row for each click of the Fillby Button? VB 2010 EXPRESS?

    Hi there, 
    I am a beginner in Visual Basic Express 2010. I have a Point of Sale program that uses DataGridView to display records from an external microsoft access
    database using the fillby query. 
    It works, but it repopulates the same row each time, but i want to be able to display multiple records at the same time, a new row should be filled for
    each click of the fillby button. 
    also I want to be able to delete any records if the customer suddenly decides to not buy an item after it has already been entered. 
    so actually 2 questions here: 
    1. how to populate a new row for each click of the fillby button 
    2. how to delete records from data grid view after an item has been entered 
    Thanks 
    Vishwas

    Hello,
    The FillBy method loads data according to what the results are from the SELECT statement, so if there is one row then you get one row in the DataGridView, have two rows then two rows show up.
    Some examples
    Form load populates our dataset with all data as it was defined with a plain SELECT statement. Button1 loads via a query I created after the fact to filter on a column, the next button adds a new row to the existing data. When adding a new row it is appended
    to the current data displayed and the primary key is a negative value but the new key is shown after pressing the save button on the BindingNavigator or there are other ways to get the new key by manually adding the row to the backend table bypassing the Adapter.
    The following article with code shows this but does not address adapters.
    Conceptually speaking the code in the second code block shows how to get the new key
    Public Class Form1
    Private Sub StudentsBindingNavigatorSaveItem_Click(
    sender As Object, e As EventArgs) Handles StudentsBindingNavigatorSaveItem.Click
    Me.Validate()
    Me.StudentsBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.MyDataSet)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'MyDataSet.Students' table. You can move, or remove it, as needed.
    Me.StudentsTableAdapter.Fill(Me.MyDataSet.Students)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Me.StudentsTableAdapter.FillBy(Me.MyDataSet.Students, ComboBox1.Text)
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Me.MyDataSet.Students.AddStudentsRow("Jane", "Adams", "Female")
    End Sub
    End Class
    Get new key taken from
    this article.
    Public Function AddNewRow(ByVal sender As Customer, ByRef Identfier As Integer) As Boolean
    Dim Success As Boolean = True
    Try
    Using cn As New OleDb.OleDbConnection With {.ConnectionString = Builder.ConnectionString}
    Using cmd As New OleDb.OleDbCommand With {.Connection = cn}
    cmd.CommandText = InsertStatement
    cmd.Parameters.AddWithValue("@CompanyName", sender.CompanyName)
    cmd.Parameters.AddWithValue("@ContactName", sender.ContactName)
    cmd.Parameters.AddWithValue("@ContactTitle", sender.ContactTitle)
    cn.Open()
    cmd.ExecuteNonQuery()
    cmd.CommandText = "Select @@Identity"
    Identfier = CInt(cmd.ExecuteScalar)
    End Using
    End Using
    Catch ex As Exception
    Success = False
    End Try
    Return Success
    End Function
    In closing I have not given you a solution but hopefully given you some stuff/logic to assist with this issue, if not perhaps I missed what you want conceptually speaking.
    Additional resources
    http://msdn.microsoft.com/en-us/library/fxsa23t6.aspx
    Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem.

  • Lookup Data For Each Record of Result Set

    I'm trying to determine if the following task is possible in BPEL and how to implement it.
    Assume I have two DB Adapters returning data from two different databases.
    The first excepts no inputs returns 5 records in a collection looking somewhat like the following.
    Order ID, Item ID
    1, 2
    2, 1
    3, 1
    4, 2
    5, 3
    The second accepts an Item ID as input and returns the description for that item.
    I would like the output of the BPEL Process to look like this.
    Order ID, Item ID, Item Desc
    1, 2, Computer
    2, 1, Desk
    3, 1, Desk
    4, 2, Computer
    5, 3, Lamp
    I'm new to BPEL and I'm assuming this will involve invoking the first db adapter link and then iterator through the result set calling the second db adapter link for each record but I'm not sure where to start. I'm hoping someone can give me a simple example that I can play with. I've looked at How to iterate through multiple records read from a file adapter? and How to pass a single element in an array to XSL from BPEL but I'm getting lost.
    Thanks

    I just got it working in the BPEL for-each loop by creating a variable of type Order which I then assigned the results from that loop and then appended them to my output variable. I'd be interested in seeing how I could do that within a transformation if its quicker. How do I append in a transformation so that I can add the row after each loop.
    Here is the BPEL so far.
    I will note that I think just fetching a complete copy of both data sources and merging wouldn't be ideal as my items table could contain a million records or more and I'm only wanting to fetch the ones I'm interested in.
    Thanks
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
      Oracle JDeveloper BPEL Designer
      Created: Thu Dec 19 10:16:29 CST 2013
      Author:  shawn.c.weeks.ctr
      Type: BPEL 2.0 Process
      Purpose: Synchronous BPEL Process
    -->
    <process name="Lookup_Orders"
                   targetNamespace="http://xmlns.oracle.com/Order_Lookup/Sales_System/Lookup_Orders"
                   xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
                   xmlns:client="http://xmlns.oracle.com/Order_Lookup/Sales_System/Lookup_Orders"
                   xmlns:ora="http://schemas.oracle.com/xpath/extension"
                   xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
             xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
             xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/Order_Lookup/Sales_System/get_orders"
             xmlns:ns2="http://www.example.org"
             xmlns:ns3="http://xmlns.oracle.com/pcbpel/adapter/db/top/get_orders"
             xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
             xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
             xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
             xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue"
             xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
             xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
             xmlns:bpm="http://xmlns.oracle.com/bpmn20/extensions"
             xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk"
             xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
             xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
             xmlns:ns4="http://xmlns.oracle.com/pcbpel/adapter/db/Order_Lookup/Sales_System/get_items"
             xmlns:ns5="http://xmlns.oracle.com/pcbpel/adapter/db/top/get_items"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <import namespace="http://xmlns.oracle.com/Order_Lookup/Sales_System/Lookup_Orders" location="Lookup_Orders.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
        <!--
            PARTNERLINKS                                                     
            List of services participating in this BPEL process              
        -->
      <partnerLinks>
        <!--
          The 'client' role represents the requester of this service. It is
          used for callback. The location and correlation information associated
          with the client role are automatically set using WS-Addressing.
        -->
        <partnerLink name="lookup_orders_client" partnerLinkType="client:Lookup_Orders" myRole="Lookup_OrdersProvider"/>
        <partnerLink name="get_orders" partnerLinkType="ns1:get_orders_plt"
                     partnerRole="get_orders_role"/>
        <partnerLink name="get_items" partnerLinkType="ns4:get_items_plt"
                     partnerRole="get_items_role"/>
      </partnerLinks>
      <!--
          VARIABLES                                                       
          List of messages and XML documents used within this BPEL process
      -->
      <variables>
        <!-- Reference to the message passed as input during initiation -->
        <variable name="inputVariable" messageType="client:Lookup_OrdersRequestMessage"/>
        <!-- Reference to the message that will be returned to the requester-->
        <variable name="outputVariable" messageType="client:Lookup_OrdersResponseMessage"/>
        <variable name="Invoke1_get_ordersSelect_InputVariable"
                  messageType="ns1:get_ordersSelect_inputParameters"/>
        <variable name="Invoke1_get_ordersSelect_OutputVariable"
                  messageType="ns1:OrdersCollection_msg"/>
        <variable name="Invoke2_get_itemsSelect_InputVariable"
                  messageType="ns4:get_itemsSelect_inputParameters"/>
        <variable name="Invoke2_get_itemsSelect_OutputVariable"
                  messageType="ns4:ItemsCollection_msg"/>
        <variable name="Output_Row" element="ns2:OrderCollection"/>
      </variables>
      <!--
         ORCHESTRATION LOGIC                                              
         Set of activities coordinating the flow of messages across the   
         services integrated within this business process                 
      -->
      <sequence name="main">
        <!-- Receive input from requestor. (Note: This maps to operation defined in Lookup_Orders.wsdl) -->
        <receive name="receiveInput" partnerLink="lookup_orders_client" portType="client:Lookup_Orders" operation="process" variable="inputVariable" createInstance="yes"/>
        <!-- Generate reply to synchronous request -->
        <invoke name="Invoke1" bpelx:invokeAsDetail="no" partnerLink="get_orders"
                portType="ns1:get_orders_ptt" operation="get_ordersSelect"
                inputVariable="Invoke1_get_ordersSelect_InputVariable"
                outputVariable="Invoke1_get_ordersSelect_OutputVariable"/>
        <forEach parallel="no" counterName="ForEach1Counter" name="ForEach1">
          <startCounterValue>1</startCounterValue>
          <finalCounterValue>count($Invoke1_get_ordersSelect_OutputVariable.OrdersCollection/ns3:Orders)</finalCounterValue>
          <scope name="Scope1">
            <sequence name="Sequence1">
              <assign name="Assign2">
                <copy>
                  <from>$Invoke1_get_ordersSelect_OutputVariable.OrdersCollection/ns3:Orders[$ForEach1Counter]/ns3:itemId</from>
                  <to>$Invoke2_get_itemsSelect_InputVariable.get_itemsSelect_inputParameters/ns5:item_id</to>
                </copy>
              </assign>
              <invoke name="Invoke2" bpelx:invokeAsDetail="no"
                      partnerLink="get_items" portType="ns4:get_items_ptt"
                      operation="get_itemsSelect"
                      inputVariable="Invoke2_get_itemsSelect_InputVariable"
                      outputVariable="Invoke2_get_itemsSelect_OutputVariable"/>
              <assign name="Assign3">
                <copy>
                  <from>$Invoke1_get_ordersSelect_OutputVariable.OrdersCollection/ns3:Orders[$ForEach1Counter]/ns3:orderId</from>
                  <to>$Output_Row/ns2:Order/ns2:Order_ID</to>
                </copy>
                <copy>
                  <from>$Invoke1_get_ordersSelect_OutputVariable.OrdersCollection/ns3:Orders[$ForEach1Counter]/ns3:itemId</from>
                  <to>$Output_Row/ns2:Order/ns2:Item_ID</to>
                </copy>
                <copy>
                  <from>$Invoke2_get_itemsSelect_OutputVariable.ItemsCollection/ns5:Items[1]/ns5:itemDesc</from>
                  <to>$Output_Row/ns2:Order/ns2:Item_Desc</to>
                </copy>
              </assign>
              <assign name="Assign4">
                <extensionAssignOperation>
                  <bpelx:append>
                    <bpelx:from>$Output_Row/ns2:Order</bpelx:from>
                    <bpelx:to>$outputVariable.payload</bpelx:to>
                  </bpelx:append>
                </extensionAssignOperation>
              </assign>
            </sequence>
          </scope>
        </forEach>
        <reply name="replyOutput" partnerLink="lookup_orders_client" portType="client:Lookup_Orders" operation="process" variable="outputVariable"/>
      </sequence>
    </process>

  • Getting the first row for each group

    Hi Everyone,
    I have a query which returns a number of rows, all of which are valid. What I need to do is to get the first row for each group and work with those records.
    For example ...
    client flight startairport destairport stops
    A fl123 LGW BKK 2
    A fl124 LHR BKK 5
    B fl432 LGW XYZ 7
    B fl432 MAN ABC 8
    .... etc.
    I would need to return one row for Client A and one row for Client B (etc.) but find that I can't use the MIN function because it would return the MIN value for each column (i.e. mix up the rows). I also can use the rownum=1 because this would only return one row rather than one row per group (i.e. per client).
    I have been investigating and most postings seem to say that it needs a second query to look up the first row for each grouping. This is a solution which would not really be practical because my query is already quite complex and incorporating duplicate subqueries would just make the whole thing much to cumbersome.
    So what I really new is a "MIN by group" or a "TOP by group" or a "ROWNUM=1 by group" function.
    Can anyone help me with this? I'm sure that there must be a command to handle this.
    Regards and any thanks,
    Alan Searle
    Cologne, Germany

    Something like this:
    select *
    from (
       select table1.*
       row_number() over (partition by col1, col2 order by col3, col4) rn
       from table1
    where rn = 1In the "partition by" clause you place what you normally would "group by".
    In the "order by" clause you define which will have row_number = 1.
    Edit:
    PS. The [url http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions004.htm#i81407]docs have more examples on using analytical functions ;-)
    Edited by: Kim Berg Hansen on Sep 16, 2011 10:46 AM

  • XML DB: is it possible to get a row for each element in a container element?

    I have an XML document containing a container element (collection). If I query, using an XPath expression, the contained elements I get a row for each container element with the contained element concatenated. Is it possible to get a row for each contained element?
    I run this simple query:
    select extract(xmltype('<colors><color>Red</color><color>Green</color></colors>')
    , '/colors/color/text()').getstringval() from dual
    And get this result:
    EXTRACT(XMLTYPE('<COLORS><COLOR>RED</COLOR><COLOR>GREEN</COLOR></COLORS>'),'/COL
    RedGreen
    1 row selected.
    What I would like to have is:
    Red
    Green
    2 rows selected.
    Wishful thinking or possible? Many thanks!

    Sure. This is where our XMLSequence() function comes in. It allows you to treat the top-level nodes in a nodeset as if they were rows in a table when combined with the TABLE() operator. Here's an example.
    First, to make the SQL look a little cleaner, I like to define a function like this:
    create or replace function testdoc return xmltype as
    begin
      return xmltype('<colors><color>Red</color><color>Green</color></colors>');
    end;.
    To break out the nodeset of <color> elements as a table, we use the following query:
    select value(list_of_color_elements).extract('*/text()').getStringVal() as color
    from TABLE( XMLSequence( extract(testdoc(),'/colors/color'))) list_of_color_elements.
    Or, using the new-in-9.2 extractValue() operator so we don't have to remember the text() part:
    select extractValue( value(list_of_color_elements), '.') as color
    from TABLE( XMLSequence( extract( testdoc() ,'/colors/color'))) list_of_color_elements.
    Here the TABLE(XMLSequence(...)) combo produces a table of XMLType, with one XMLType object in each row of the table.
    In general, if the XMLType instance were coming from an XMLType table xmltab the query would look like this:
    select extractValue( value(colors), '.') as color
    from xmltab x, /* Important that this table comes earlier in the FROM clause! */
         TABLE( XMLSequence( extract( value(x),'/colors/color'))) colors.
    And if the XMLType were instead in a column of XMLType named doc in a table xmltab, then we would have the syntax:
    select extractValue( value(colors), '.') as color
    from xmltab x, /* Important that this table comes earlier in the FROM clause! */
         TABLE( XMLSequence( extract( x.doc ,'/colors/color'))) colorsOnce you get the hang of it, you'll see that the combination of TABLE(XMLSequence()) to "shred" XML nodes into rows, and XMLAgg() to aggregate fragments of XML across multiple rows back into a single document, is quite powerful.

Maybe you are looking for

  • How to Read Archived Messages in XI

    HI I am facing problem in reading archived XI messages. i am trying to read messages archived in November. Can please anyone explain me how to read this. Thanks in Advance Regards Swapnil

  • Problem when calling session bean from main.

    Hi everyone I get the following error when calling a session bean from main(String args[]). Sep 3, 2008 9:11:13 AM com.sun.enterprise.appclient.MainWithModuleSupport <init> WARNING: ACC003: Application threw an exception. java.lang.NullPointerExcepti

  • Do I need to buy an online number if I purchase Fr...

    I am looking to buy the Freetalk Connect Me adaptar for my phone so I can call people I know on an ordinary phone. If I buy the hardware that comes with the year subscription for unlimited calls to US/Canada, do I also have to buy an online number to

  • Transfer a parameter to a physical table/view

    Hi Is there is possibility to transfer a parameter from a request/dashboard to a view/table in the physical table. Meaning I want to pass variable that will hold dates and pass them directly to the table or view and the table will be filtered dynamic

  • Im not getting AD password expiration notices in Leopard

    Has anyone else having problems getting AD password expiration notices in AD environments on Leopard Macs? It used to work for me in Tiger, but Im not getting the warnings when I log into Leopard Macs. Entourage warns me, but the Login window isn't p