Get the multiplication of values in column on an attached table based on the condition

The title was the best I could find to explain my question, I do not think that it does help. in any case, I have two tables:

CREATE TABLE YEARLY_RATES

( RATE_YEAR NUMBER(4,0),

RATE NUMBER(6,4)

);

  CREATE TABLE PERSON_ACCOUNT

( PAID_YEAR NUMBER(4,0),

PAID_AMOUNT(10,2)

);

I need select PERSON_ACCOUNT. PAID_YEAR, PERSON_ACCOUNT. PAID_AMOUNT, PERSON_ACCOUNT. PAID_AMOUNT * multiplication of the YEARLY_RATES. RATE WHERE YEARLY_RATES. RATE_YEAR > = PERSON_ACCOUNT. PAID_YEAR. So for example if I have the following data in PERSON_ACCOUNT

PAID_YEAR|PAID_AMOUNT

---------------------

2006   2150.69

2007   3290.40

2008   3000.35

and YEARLY_RATES tables

RATE_YEAR|RATE

---------------------

2006   1.067

2007   1.208

2008   1.057

Then I should be able to have the following result:

PAID_YEAR|PAID_AMOUNT|INDEXED_AMOUNT

----------------------------------------------------

2006    2150.69    2150.69*1.067*1.208*1.057

2007    3290.40    3290.40*1.208*1.057

2008    3000.35    3000.35*1.057

with

yearly_rates as

(by selecting RATE_YEAR 2006, double the RATE of 1.067 in union all the)

Select 2007,1.208 from all the double union

Select double 2008,1.057

)

indexed_rate Select rate_year, rate, exp (sum (ln (rate)) (order by rate_year desc))

of yearly_rates

RATE_YEAR RATE INDEXED_RATE
2008 1,057 1.05699999999999999999999999999999999999
2007 1,208 1.27685600000000000000000000000000000001
2006 1,067 1.36240535200000000000000000000000000001

Concerning

Etbin

model clean air solution

Select rate_year, indexed_rate

of yearly_rates

dimension of the model by (rate_year)

measures (rate, 1 indexed_rate)

rules

(

indexed_rate [any] rate_year desc = order rate [cv ()] * nvl (indexed_rate [cv () + 1], 1)

)

RATE_YEAR RATE INDEXED_RATE
2006 1,067 1.362405352
2007 1,208 1.276856
2008 1,057 1,057

Update of the first solution proposed by ChrisHunt


What about recursive with

with

yearly_rates as

(by selecting rate_year 2006, double the rate of 1.067 in union all the)

Select 2007,1.208 from all the double union

Select double 2008,1.057

),

indexed_rates (rate_year, spleen, indexed_rate) as

(select rate_year, indexed_rate

(select rate_year, rates, indexed_rate, row_number () over (order by rate_year desc) step

of yearly_rates

)

the stage where = 1

Union of all the

Select yr.rate_year, yr.rate, ir.indexed_rate * yr.rate

to indexed_rates ir,.

yearly_rates year

where yr.rate_year = ir.rate_year - 1

)

Select rate_year, indexed_rate

of indexed_rates

RATE_YEAR RATE INDEXED_RATE
2008 1,057 1,057
2007 1,208 1.276856
2006 1,067 1.362405352

Post edited by: recursive Etbin with solution added

Tags: Database

Similar Questions

  • Insert data into the same table based on certain conditions

    Hello. I'm new to this forum.
    I have to write a stored procedure to insert data in a table MYTABLE say, having a structure like:

    Col1 Col2 Col3... TotalInstallments CurrentInstallment PaidAmount MonthYear
    I have to insert all the data that it is in the same table (MYTABLE) except change some fields based on certain conditions:

    1. if PaidAmount > 0 & & CurrentInstallment < TotalInstallment then

    CurrentInstallment = CurrentInstallment + 1

    2. in the field MonthYear I have data ex. 01/2012, 11/2012 formate(month/year)...

    So, I have to insert data by incrementing the month and year. for example:

    If currentdata is 11/2012 next data will be 12/2012

    But following will be 01, 2013
    I have to select all records that belongs to the previous month (across the field MonthYear) and put the audit on each record selected and insert data and then turns them into table (MYTABLE) even.

    How to achieve that?

    Thank you.

    978184 wrote:
    Hello. I'm new to this forum.
    I have to write a stored procedure to insert data in a table MYTABLE say, having a structure like:

    Col1 Col2 Col3... TotalInstallments CurrentInstallment PaidAmount MonthYear
    I have to insert all the data that it is in the same table (MYTABLE) except change some fields based on certain conditions:

    1. if PaidAmount > 0 & CurrentInstallment

    CurrentInstallment = CurrentInstallment + 1

    2. in the field MonthYear I have data ex. 01/2012, 11/2012 formate(month/year)...

    So, I have to insert data by incrementing the month and year. for example:

    If currentdata is 11/2012 next data will be 12/2012

    But following will be 01, 2013
    I have to select all records that belongs to the previous month (across the field MonthYear) and put the audit & on each of the selected data record and insert then turns them into table (MYTABLE).

    You can do this way:

    This is not tested, but if you can provide the example of table structure and data (IN create table and insert scripts), it can be put to the test.

    insert into your_table
    (col1, col2, col3...current_installment, month_field)
    select col1, col2, col3..,
           current_installment +
           case when paidamount > 0 and current_installment < total_installment then
            row_number() over (
                                partition by column1, column2,.. columnn      -->You may choose partition if you want the
                                                                              --Increment of Current_installment to reset after particular combination ends
                                order by primary_key        -->Order the Increment, you may choose to add more columns to order by
                              )
          else
            0                                               --> if condition is not met, then Add 0
          end curr_installment,
          add_months(to_date(month_field, 'MM/YYYY'), 1) nxt_month
      from your_table;
    
  • How to get the columns of the table based on different conditions in one column?

    Hello

    I have two sql queries-

    Select sum (col1) sum1 Tab1
    where join_date > (sysdate - 1).

    Select sum (col1) sum2 of Tab1
    where join_date > (sysdate-4)

    I need to use a single query to get sum1 and sum2 data in a single line.


    Can someone help please how?

    Like this?
    
    select sum(case when join_date > (sysdate - 1) then col1 else null end) sum1
         , sum(col1) sum2
      from tab1
     where join_date > (sysdate - 4)
    
  • Add the column to an existing table-based user-defined type

    Hello guys,.
    I am compiling my function that returns a type defined by the user based on an existing table. Throughout the process of initialization so my query returns an additional column - SCORE (1). Here is my package:

    create or replace
    PACKAGE STAFF_AGENCY_PKG AS

    TYPE TYPE_SEEKER_TABLE IS TABLE OF THE DRAW. SEEKER % ROWTYPE;
    FUNCTION GET_SEEKERS (IN_KEYWORD IN VARCHAR2)
    TYPE_SEEKER_TABLE RETURN PIPELINE;

    END STAFF_AGENCY_PKG;
    -------

    create or replace
    STAFF_AGENCY_PKG PACKAGE BODY
    AS

    FUNCTION GET_SEEKERS (IN_KEYWORD IN VARCHAR2)
    TYPE_SEEKER_TABLE RETURN PIPELINE
    IS
    R_TBL TYPE_SEEKER_TABLE; -to return
    BEGIN
    FOR R IN)
    SELECT Seeker.SEEKER_ID,
    Seeker.FIRSTNAME,
    Seeker.LASTNAME,
    Seeker.NATIONALITY,
    Seeker.ISELIGIBLE,
    Seeker.BIRTHDATE,
    Seeker.ISRECIEVEEMAILS,
    Seeker.HIGHESTDEGREE,
    Seeker.ETHNICITY,
    Seeker.GENDER,
    Seeker.ISDISABILITY,
    Seeker.DISABILITY,
    Seeker.CV,
    Seeker.PASSWORD,
    Seeker.PREFFERED_CITY,
    SEEKER. E-mail
    SEEKER. JOB_PREFERENCES_ID,
    SCORE (1)
    THE APPLICANT Seeker
    WHERE CONTAINS (CV, ' < query >)
    < textquery lang 'grammar' = 'context' = > ' |
    GET_RELATED_CATEGORIES (IN_KEYWORD) |
    ' < / textquery >
    < score datatype = "INTEGER" / >
    (< / query > ', 1) > 0
    )
    LOOP
    PIPE ROW (R); -Error (38,10): PLS-00382: expression is of the wrong type
    END LOOP;
    RETURN;

    END GET_SEEKERS;
    END STAFF_AGENCY_PKG;

    How do I change my user type to be sufficient?

    Oracle version 11.2.0.1.0
    Thanks in advance!

    >
    How do I change my user type to be sufficient?
    >
    You will need to create two new TYPEs. The one who has all the columns of the draw. The REQUESTOR table and the new column SCORE, then a TYPE which is an array of the first type.

    See example 12-22 using a Pipelined Table function for a Transformation in the PL/SQl language reference

    http://docs.Oracle.com/CD/B28359_01/AppDev.111/b28370/tuning.htm#i53120

    Here's the first part

    -- Define the ref cursor types and function
    CREATE OR REPLACE PACKAGE refcur_pkg IS
      TYPE refcur_t IS REF CURSOR RETURN employees%ROWTYPE;
      TYPE outrec_typ IS RECORD (
        var_num    NUMBER(6),
        var_char1  VARCHAR2(30),
        var_char2  VARCHAR2(30));
      TYPE outrecset IS TABLE OF outrec_typ;
     FUNCTION f_trans(p refcur_t)
          RETURN outrecset PIPELINED;
    END refcur_pkg;
    /
    
    CREATE OR REPLACE PACKAGE BODY refcur_pkg IS
      FUNCTION f_trans(p refcur_t)
       RETURN outrecset PIPELINED IS
        out_rec outrec_typ;
        in_rec  p%ROWTYPE;
      BEGIN
    

    Change

      TYPE outrec_typ IS RECORD (
        var_num    NUMBER(6),
        var_char1  VARCHAR2(30),
        var_char2  VARCHAR2(30));
      TYPE outrecset IS TABLE OF outrec_typ;
    

    to include all the columns you need. Unfortunately, you have to manually list all the columns in the draw. The REQUESTOR table. If you think you need this same structure in other places you must create them as SQL types instead of PL/SQL types.

    This example should be enough to show you how to modify your code to do something similar.

  • How to display the image in the table based on certain conditions

    Hi all

    I have a table of search results which has a column as error.
    The data that appears in this column after research is 1 or 0.

    I want to display an image of success for "1" and a picture of error to the '0' value in the table.

    How to get there?

    TIA,
    Bob

    You must use the af:switcher component - http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_switcher.html

    For example








  • SQL query * I want to insert a file column in the other table based on two columns

    I want to insert a column records to another table based on two columns

    the query below does not work

    insert into def_ver_lnki_p (job_name)

    Select def_job.job_name

    from def_job where def_job.job_id = def_ver_lnki_p.job_id and def_job.table_id = def_ver_lnki_p.table_id;

    Just to correct sql

    Update

    def_ver_lnki_p define job_name =)

    Select def_job.job_name

    of def_job

    where def_job.job_id = def_ver_lnki_p.job_id

    (and def_job.table_id = def_ver_lnki_p.table_id);

  • Choose field from the joined table based on another field?

    Hello!

    Is it possible to select a field in a row of attached table based on another field? Consider the following data in the CVALUES table:
    ID  C1   C2    C3    C4    C5    C6
    T1  9.6  10.3  12.4  19.6  19.6    0
    T7  9.6  10.4     0     0     0    0
    T3  8.2   9.9  11.4  19.6  19.6    0
    T8  8.3  10.7  13.5  20.7     0    0
    T5  9.4  10.3  12.7  22.9  19.6    0
    ...
    And the following data in the table MDETAIL:
    ID           MDATE        CNUM     ...
    T1  03/28/2012 18:00:00    4
    T1  03/28/2012 18:00:00    1
    T8  03/29/2012 06:00:00    6
    T8  03/29/2012 06:00:00    5
    ...
    I want to get the column corresponding to the VALUE field in the table MDETAIL CVALUES. I'm doing this:
    SELECT m.t1, m.mdate,
           CASE WHEN m.cnum = 1 THEN c.c1
                WHEN m.cnum = 2 THEN c.c2
                WHEN m.cnum = 3 THEN c.c3
                WHEN m.cnum = 4 THEN c.c4
                WHEN m.cnum = 5 THEN c.c5
                WHEN m.cnum = 6 THEN c.c6 END AS cvalue
      FROM mdetail m
      JOIN cvalues c ON m.id = c.id
    The CVALUES table records are unique; only one line by ID.

    This method works and it's fast, but it's messy code and I think there must be a better way to do it. I use cvalue value in several calculations so each calculation that I use is this giant glob of CASES inside!

    Hello

    With a decoding it would be easier, but as ugly :-)

    SELECT m.t1, m.mdate,
           DECODE( m.cnum , 1 , c.c1, 2, c.c2, 3, c.c3, 4, c.c4, 5, c,c5, 6, c,c6) cvalue
      FROM mdetail m, cvalues c
      WHERE m.id = c.id
    

    Success!

    FJFranken

  • Hide an entire column based on a condition

    Hello

    I'm trying to completely hide a column in a table based on a condition, if the column was not present. I wrote two conditional regions for the header and data, but it is still showing up. Any help would be appreciated. The XML model RTF, the PDF generated and the output I'm looking is attached. Thank you.

    Please check your email that I have forwarded to update the model.

    I counted occurrences of January in your xml and formed the condition based on the fi

    MONTH

  • Problem with the conditional tags in printed output

    I write help files for different versions of our software - version 4 and 5 using Robohelp for HTML 5.0.2

    There is a large overlap of information between the two, so I use a help file joint with marked topics that are specific to version 4 or version 5.

    I went out and then use with 'NOT v4' or "NOT v5" as the conditional tags.

    It works fine in the HTML output. However, I encountered problems with the printed output.

    Ideally, I want the help file using the option "generate the single document" because it means that the document produced, without the single output field. However, when I do, the tags conditional build fail and I get a piecemeal result.

    If I generate the document by using the option 'generate individual documents' tags conditional build work, but I get the only field I want to avoid.

    Does anyone know how to get the conditional tags to work when the option "generate the single document" is selected?

    Pierre and HKabaker - thanks for your comments.

    I think I have the answer now.

    In the properties for the SSL Print dialog, the third screen is the dialogue of section layout. I had removed some sections in the right pane (for example, the default title page, glossary, and index) because I did not want them to appear in the final printed output. It seems that without these sections present conditional compilation tags do not work correctly when the document is released by using the option 'generate a single document ".

    I started again with a "blank" printing of SSL version. Conditional constructions using the "generate a single document" appear to work fine when I leave the dialog layout intact section.

    I can even do the conditional tags build an injustice because the option "generate a single document" (after that I made the changes in the dialog layout section) seems to be that some of the chapters in the table of contents and omitting others.

  • How to get the values separated by commas of multiple records in table

    How to get the values separated by commas of multiple records in table

    for example

    name address age sex
    a 12 m e
    b hh 12 f
    BB c 13 h

    I need to get output as a, b, c from a query

    Use the query as below he works for me, change the names of tables and columns

    SELECT SUBSTR (SYS_CONNECT_BY_PATH (PROXY_EMAIL, ','), 2) csv FROM (SELECT PROXY_EMAIL, ROW_NUMBER () ON the rn (ORDER OF PROXY_EMAIL), COUNT (*) NTC (STARS_PROXY_ASSIGNMENT) WHERE EMPLID = #EMPLID) WHERE rn = cnt START WITH rn = 1 CONNECT BY rn = rn + 1 ADVANCE

  • Multiple values per column in the stacked bar chart

    I want to use a bar chart stacked in a dashboard of the process, but I am wondering how I can add multiple values per column, because through the available methods, you can only add one value per column. I add some values to hardcode and I get the chart but, for example, I want to add series anocher in the table named 'Closed' and values for this in each column (January, February, etc.)

    Data source for filling
    result as a Fuego.Chart.DefaultXYDataSource
    result = Fuego.Chart.DefaultXYDataSource ("Opened");

    addValue result
    using
    value = 5,
    columnHeader = "January".

    addValue result
    using
    value = 10,
    columnHeader = "February".

    addValue result
    using
    value = 15,
    columnHeader = "March".

    addValue result
    using
    value = 7,
    columnHeader = "April".


    I enjoyed your collaboration if you have worked with graphics stacked bar.

    Hello

    You were very close.

    Try to use the Fuego.Chart.XYZDataSourceImpl object. This will give you the third dimension that your stacked bar chart needs and these attributes in the addValue method:

  • value
  • rowHeader (maybe that's where you set your month name)
  • columnHeader (maybe it's where set it to 'Open' or 'Closed' in your example)

    Dan

  • How to get the value of a column in sql query?

    Hi, anyone knows how to get the value of a column in sql query?

    Here is my code, the value must be 1350079224397 in my PB, but I get 0

    QString query ("SELECT version FROM db_version");

    QVariant result = sda.execute (query);
    QVariantMap versionMap = result.toList () such () .toMap ();
    If (! versionMap.IsEmpty ())
    {
    qDebug()<"Version: "=""><>
    }

    OK, I have the solution

    QString query ("SELECT version as version FROM db_version");

  • How to get the value of the interactive report into apex 5 column

    Hello

    I want to create the master detail report with ajax.

    If I want to get the value of a specific column of interactive report when click on one line and has a value of element of selected row column value.

    Then use the elements of value to refresh the details report.

    You have a better idea to refresh the report Details according to select line of the master report without refreshing the whole page?

    Hi SYSMAN2007,

    SYSMAN2007 wrote:

    I want to create the master detail report with ajax.

    If I want to get the value of a specific column of interactive report when click on one line and has a value of element of selected row column value.

    Then use the elements of value to refresh the details report.

    You have a better idea to refresh the report Details according to select line of the master report without refreshing the whole page?

    You can do this with the help of dynamic action. You need to get the value of the column of a line click in IR (using jQuery) and set the value to the elements which, in turn, can be used as a filter to other reports on the same page.

    See: How to use the values in the columns of an interactive report (Apex 5)

    Can you reproduce your problem on apex.oracle.com and share the credentials of the workspace, so that I can demonstrate how this can be achieved.

    See an example of how it can be done with dynamic actions: https://apex.oracle.com/pls/apex/f?p=35467:5

    Kind regards

    Kiran

  • How to get the 6th element of a C.V. value column

    Hi all

    I use Oracle Business Intelligence 11.1.1.7.131017.

    I have a column with the following formula: C.V. ("Tickets". "Number of tickets"), but since we want to only show the values advocated by the past 6 months and which is an accumulative column, we added the rank function in the filter and placed as: grade (C.V. ("Tickets". " Number of tickets')) < = 6 and for the final formula, we need the minimum value that is placed in 6th place...

    My problem is how to get the value assigned to this position?

    Here's the column values:

    30719 (value I pretend-> min)

    31357

    32025

    32595

    33652

    34616 (I also use this value-> max)

    Any idea on how to get the value placed on tier 6?

    Thanks for the help and have a good week.

    Kind regards

    Frederico.

    I found a solution (poor, but it works)...

    As a minimum I want is always located in the row = 6 I put a case when row = 6, then returns the value I'm pretending, else return 0, so after that I need only the max of all values, as they are 0 or the value that I'm pretending, like this:

    MAX (CASE WHEN (GRADE (C.V. ("Tickets". "Number of tickets')) = 6) THEN of C.V. (FILTER ("Tickets"." Number of tickets' using 'status '. ((("" Resolved "="Resolvido")) END ELSE 0)

    I want to thank you all for the help, normally I post in the forum of the ADF but its good to know I can get a lot of support here as well...

    Many thanks to all,

    Frederico.

  • Hi, I have a PDF form that has multiple check boxes. Some boxes have values (off, yes) that others have just (Yes). How can I get the value of "Off" to all of the other boxes as well. Any help is greatly appreciated.

    Hi, I have a PDF form that has multiple check boxes. Some boxes have values (off, yes) that others have just (Yes). How can I get the 'Off' the value assigned to all the other boxes as well. Any help is greatly appreciated.

    'Off' is the default value of any box when it is not checked. It can not

    be changed.

Maybe you are looking for