SQL Help: Derive "new" columns based on condition

Hello all,
Can someone please help me with this ? I am trying to achieve this in a SQL ( not PL/SQL), if it can be done in two different steps, even that is fine too...
Thanks in advance,
Chandu
SELECT * FROM
SELECT 2765 BTCH_ID,'payroll' BTCH_NM,'payroll~EUR~EUR~DE'NEW_BTCH_NM,'1234'TMPLT_ID FROM DUAL
UNION
SELECT 2765,'payroll','payroll~USD~USD~US','1235' FROM DUAL
UNION
SELECT 2765,'payroll','payroll~USD~USD~US','1236' FROM DUAL
UNION
SELECT 2765,'payroll','payroll~GBP~GBP~GB','1237' FROM DUAL
UNION
SELECT 2766,'SALARY','SALARY~USD~USD~US','1238' FROM DUAL
UNION
SELECT 2766,'SALARY','SALARY~USD~USD~US','1239' FROM DUAL
) T_BATCH;For a "Batch-id" there exists multiple Transactions which are denoted by ( cr_crncy_cd , dr_crncy_cd , recvr_cntry_cd), and "NEW_BTCH_NM" column is basically a concatenation of "BTCH_NM" + above 3 columns ( with a ~)
I am trying to derive two new columns 'SEQ' & 'Output_Batch_name'
SEQ column:
For every batch_id, the first row will be assigned by sequence.nextval.
    For all transactions within BTCH_ID,
                   all the rows with same NEW_BTCH_NM, share the same sequence number
                    if different, then SEQ.nextval for all distinct rows
Output_BTCH_NM:
   for a given batch_id,
         if the NEW_BTCH_NM is the same for all transactions ( batch_id 2766 in the below example) , 
                         then Output_BTCH_NM = BTCH_NM should be marked for All transactions which belong to this Batch_id,
        Else
            Output_BTCH_NM = New_BTCH_NM
     END if
Expected OUTPUT
*BTCH_ID     BTCH_NM             NEW_BTCH_NM          TMPLT_ID     SEQ         Output_BTCH_NM*
2765       payroll                payroll~EUR~EUR~DE     1234         1          payroll~EUR~EUR~DE
2765       payroll                payroll~GBP~GBP~GB     1237         2          payroll~GBP~GBP~GB
2765       payroll                payroll~USD~USD~US     1235         3          payroll~USD~USD~US
2765       payroll                payroll~USD~USD~US     1236         3          payroll~USD~USD~US
2766       SALARY                SALARY~USD~USD~US     1238         4          SALARY
2766       SALARY                SALARY~USD~USD~US     1239         4          SALARYEdited by: user10711957 on Sep 25, 2010 4:37 PM

Can someone please help me with this ? I am trying to achieve this in a SQL ( not PL/SQL), if it can be done in two different steps, even that is fine too...
Thanks in advance,
Chandu
SELECT * FROM
SELECT 2765 BTCH_ID,'payroll' BTCH_NM,'payroll~EUR~EUR~DE'NEW_BTCH_NM,'1234'TMPLT_ID FROM DUAL
UNION
SELECT 2765,'payroll','payroll~USD~USD~US','1235' FROM DUAL
UNION
SELECT 2765,'payroll','payroll~USD~USD~US','1236' FROM DUAL
UNION
SELECT 2765,'payroll','payroll~GBP~GBP~GB','1237' FROM DUAL
UNION
SELECT 2766,'SALARY','SALARY~USD~USD~US','1238' FROM DUAL
UNION
SELECT 2766,'SALARY','SALARY~USD~USD~US','1239' FROM DUAL
) T_BATCH;For a "Batch-id" there exists multiple Transactions which are denoted by ( cr_crncy_cd , dr_crncy_cd , recvr_cntry_cd), and "NEW_BTCH_NM" column is basically a concatenation of "BTCH_NM" + above 3 columns ( with a ~)
I am trying to derive two new columns 'SEQ' & 'Output_Batch_name'
SEQ column:
For every batch_id, the first row will be assigned by sequence.nextval.
    For all transactions within BTCH_ID,
                   all the rows with same NEW_BTCH_NM, share the same sequence number
                    if different, then SEQ.nextval for all distinct rows
Output_BTCH_NM:
   for a given batch_id,
         if the NEW_BTCH_NM is the same for all transactions ( batch_id 2766 in the below example) , 
                         then Output_BTCH_NM = BTCH_NM should be marked for All transactions which belong to this Batch_id,
        Else
            Output_BTCH_NM = New_BTCH_NM
     END if
Expected OUTPUT
*BTCH_ID     BTCH_NM             NEW_BTCH_NM          TMPLT_ID     SEQ         Output_BTCH_NM*
2765       payroll                payroll~EUR~EUR~DE     1234         1          payroll~EUR~EUR~DE
2765       payroll                payroll~GBP~GBP~GB     1237         2          payroll~GBP~GBP~GB
2765       payroll                payroll~USD~USD~US     1235         3          payroll~USD~USD~US
2765       payroll                payroll~USD~USD~US     1236         3          payroll~USD~USD~US
2766       SALARY                SALARY~USD~USD~US     1238         4          SALARY
2766       SALARY                SALARY~USD~USD~US     1239         4          SALARY

Similar Messages

  • Hide column based on condition on other column in table

    hi,
    am using BIP 10.1.3.2 to generate reports.In the template i need to hide one column based on condition on other.am using SQL query as my data source type.can anybody help me ?

    Use <?if:?> condition in the RTF, but its mainly for the rows not column. You can work around this by handeling in backend. Or take two separate tables, one with the column which you want to hide and another table without that column and before calling that table use IF condition.
    Regards,
    Amit D
    Persistent Systems Ltd.

  • New column based on four logical measure column

    Hi All
    I have four logical measure column which each one indicate how many activity under each service request.
    ie value of each column is
    col1 - 1,
    col2 - 2
    col3 - 3
    col4 - 4 activities or more
    Based on this can i create a new measure column, whenever any service request has two activitiy, my new column should show 2 (ie value col2)
    can i do the max of all the four columns or how to approach this issue?.
    Thanks

    Yes, this is little bit complicated.
    Since there is no direct SQL which extracts the number of activities under each Service Request in the existing setup. They used the nbr of rows in activity in relation to service request table. This way they calcuate the nbr of activities under each SErvice request.
    In the previous request, business want to see how many Service request with one activity or two activties. Because of this, four logical column have been created.
    Now My request need to see service request with one activity or more than one activity measure in the drill report. Since i have already show that nbr of service request with one activity or more than one activity in a chart format.
    Instead of showing all the four measure in my drill report, i want to show if a service request has got one or more than 1 activity.

  • Refresh Cell Value Of Column Based On Condition

    Hi Experts,
    I m working on UI5 grid.
    This my grid:
    My requirement is:
    On change of "Actual Value ", if value is in between UL and LL then "Sub Test" column should be refreshed with image(ex.green ! mark)
    Till Now i achieved upto comarision in columns:
    But now i stucked with ,how to refresh image in "Sub Test" column based on valued entered in "Actual Value" column.
    Request your ideas.
    Regards,
    Neha

    You can also use CalcFields to bind to your data if you don't want the Icon column to be part of you model.
    Documentation/AdvancedTopics/DataBinding/CalcFields – SAPUI5 Wiki (TIP CORE User Interface)
    I've modified Dennis' example slightly to use a CalcField, notice the paths are defined to create a composite binding, the data is the automatically passed to the formatter function.
    http://jsbin.com/poren/1/edit
    Regards,
    Jason

  • Inserting new columns based on the condition!

    Hi guys,
    I have a very simple query like the following… 
    SELECT table2.column_code2,
    table2.column_description2,
                 table2.column_code1,
                 table1.column_description1
    FROM database_001.table2 table1 LFET OUTER JOIN database_001.table2 table1 on (table2.column_code1 = table1.column_code1)
    From this query, its returning me a result set of something like below:
    column_code1       column_description1        column_code2                 column_description2
    RO1                              BOOK                              RL1            
                               PDF/ECOPY
    RO2                              PAPER                             RL2            
                            CONFERENCE
    RO5                            JOURNAL 
    RL11  OTHER
    Now, on the above query I want to insert three extra columns with the name (status, location and contact) where the results in the extra three columns would be based on the conditions I want to define in the query based on the above results…
    Something for example (sorry, I am not trying to write a condition: my question is how to write it), 
    if column_code1 = RO1 and column_description2  =  PDF/ECOPY on status column it should return a value ‘ONLINE’ & on location column it should return ‘WEB’ and on contact column it should write ‘BOB’.
    Also,
    if column_code1 = RO5 and column_description1 = JOURNAL on status column it should return a value ‘ON PRESS FOR PRINT’ & on location column it should return ‘S.R STREET, LONDON’ and on contact column it should write
    ‘SMITH’ like below result…so the final output should be the top four columns and the extra three columns…I hope someone can help me into this…thanks a lot…
    status                                            location                
                            contact
    ONLINE                                               WEB                          
                           BOB
    ON PRESS FOR PRINT                     S.R STREET, LONDON                           SMITH

    Hi artistdigital,
    you can use case statment for same in sql server. MSDN link - > http://technet.microsoft.com/en-us/library/ms181765.aspx
    Try code like this:
    SELECT table2.column_code2,
    table2.column_description2,
    table2.column_code1,
    table1.column_description1,
    case when column_code1 = 'RO1' and column_description2 = 'PDF/ECOPY' then 'ONLINE'
    when column_code1 = 'RO5' and column_description1 = 'PDF/ECOPY' then 'ON PRESS FOR PRINT'
    end as [status],
    case when column_code1 = 'RO1' and column_description2 = 'PDF/ECOPY' then 'WEB'
    when column_code1 = 'RO5' and column_description1 = 'PDF/ECOPY' then 'S.R STREET, LONDON'
    end as [Location],
    case when column_code1 = 'RO1' and column_description2 = 'PDF/ECOPY' then 'BOB'
    when column_code1 = 'RO5' and column_description1 = 'PDF/ECOPY' then 'SMITH'
    end as [contact]
    FROM table2
    join table1
    on table2.column_code1 = table1.column_code1
    Regards Harsh

  • How to? Suppress Crosstab Total column, based on condition, Please help!

    Hi All,
    Please give an advice on the following:
    My problem I have an item stock and value by depo by region report, with the following structure:
    http://img29.imageshack.us/img29/5289/ctab.jpg
    Row 1 is Items
    Column 1 is region, has six values (value 1->6), but its grouped in specified order like: value 1, value 2, other (all other values as one, with the name of "other")
    Column2 is depo.
    I need to hide the sum next to depo (highlited whit thin red on the pic), but only where column 1 (region)  is "other".
    i tried useing suppress, and conditional highlighting (its acceptable if the column is made blank by useing white as text color)
    if GridRowColumnValue("Region") = "other"
    Region is set for the Column1 grouping as alias in Crosstab expert.
    I usualy get the error: "This is not a name for a grid group for the field being formated."
    or if it's no error in it, it simply stays on the form.
    What am I missing? Is it even possible to do this?
    Thank you, for all of your help in advance.
    Regards,
    Daniel
    Edited by: Daniel Omaisz Takacs on Sep 14, 2010 2:49 PM

    The only way to suppress a "column" is to not pull that data.
    You can turn the column header white as well - highlight with
    if CurrentFieldValue="your value" then white else black
    or
    CurrentFieldValue="your value"   // conditional suppression

  • Using SQL Loader to insert data based on conditionally statements

    I would like to use sql loader to insert records from a single text file into an Oracle database table. Sounds easy but the problem is that I need to check the existence of data in another table (Table A) before data can be loaded into Table B.
    Table A has two columns: dept_no (primary key value) and dept_name (char)
    Table B has five columns: emp_no (primary key value), dept_no (foreign key value to Table A), employee (char), job_title (char) and salary (number)
    Text File looks like this:
    Finance Jones President 10000
    HR Smith Admin 2000
    HelpDesk Jenkins Technician 3000
    Problem:
    1. I need sql loader to insert records into Table B by first checking if the first field in the file is in Table A.
    2. If value exists get it's dept_no value.
    3. If value doesn't exist discard record ( I might want to have sql loader insert a new record for this into Table A)
    4. Using value from #2, insert the value in Table B for dept_no column.
    5. Also assign a sequence value for the emp_no value in Table B.
    Any guidance is greatly appreciated.
    Thanks,

    Hello,
    I am not sure this is possible with SQL loader. I would rather use an external table based on your file.
    Then, I would use SQL to load your data into your table, based on your conditions.
    Your request is not very complicated, writing the SQL to do that will be really more simple than trying to do it with SQL loader.
    Hope it will help.
    Regards,
    Sylvie

  • Sql Loader with new column

    Hi All,
    I have 20 text files which have large amount of data. I need to load these data into oracle db. Each of these text files having header as column name which are same in order. Now my manager ask me to load these data in database like that last column should be the file name, so that he can track from which text file data is from. Can anybody help me to do this using sql loader.
    Example:
    temp1.txt temp2.txt
    col1 col2 col1 col2
    118 'B' 100 'J'
    245 'D' 110 'K'
    160 'A' 200 'N'
    Now i need to load data into a database table from these text file as-------
    Table Name: Temp
    col1 col2 FileName
    118 'B' temp1
    245 'D' temp1
    160 'A' temp1
    100 'J' temp2
    110 'K' temp2
    200 'N' temp2

    you can load from multiple input files provided that the files use the same record format by repeating the INFILE clause. Here is an example:
    load data
    infile file1.dat
    infile file2.dat
    infile file3.dat
    fields terminated by "," optionally enclosed by '"' trailing nullcols
    ( column1,
      column2 )

  • How to Hide Columns Based on Condition

    Hi All,
    i have an SSRS Report with below four columns.
    Product_Name , Year , Credit_Amount , Debt_Amount
    I want to hide the Credit_Amount Column if that column all values are Zero.
    In the same way needs to hide Debt_Amount Column if that column all values are Zero.
    Thanks in advance.
    bala krishna

    Step 1- Right click on your required Column here in below example: I wanted to hide
    Name column
    and select Column Visibility
    Step 2- From the
     Column Visibility window , select Show or hide based on an expression and
    then click on fx button as shown in below screenshot
    Step 3- Write Your expression in expression windows as below
    =IIF(Fields!Credit_Amount.Value = 0, True, False)
    Repeat step 1 to Step 3  for Debt_Amount column .
    Sandip Pani http://SQLCommitted.com

  • Inserting millions of records into new table based on condition

    Hi All,
    We have a range partitioned table that contains 950,000,000 records (since from 2004) which is again list sub-partitioned on status. Possible values of stauts are 0,1,2,3 and 4.
    The requirement is to get all the rows with status 1 and date less than 24-Aug 2011. (Oracle 11g R2).
    I trying below code
    CREATE TABLE RECONCILIATION_TAB PARALLEL 3 NOLOGGING  
    AS SELECT /*+ INDEX(CARDS_TAB STATUS_IDX) */ ID,STATUS,DATE_D
    FROM CARDS_TAB
    WHERE DATE_D < TO_DATE('24-AUG-2011','DD-MON-YYYY')
    AND STATUS=1; CARDS_TAB has tow global indexes one on status and another on date_d.
    Above query is running for last 28Hrs! Is this the right approach?
    With Regards,
    Farooq Abdulla

    You said the table was range partitioned but you didn't say by what. I'm guessing the table is range partitioned by DATE_D. Is that a valid assumption?
    You said that the table was subpartitioned by status. If the table is subpartitioned by status, what do you mean that the data is randomly distributed? Surely it's confined to particular subpartitions, right?
    What is the query plan without the hint?
    What is the query plan with the hint?
    Why do you believe that adding the hint will be beneficial?
    Justin

  • How to disable Buttons based on condition.

    Hi
    Need your help to disable button based on condition.
    Please refer the application:
    http://apex.oracle.com/pls/otn/f?p=34797:5:110582943383419::NO:::
    login credentials:
    workspace: vsanthanam
    user: vijay
    pswd: apex_demo
    In the above application, i have 2 buttons in page 5, (Report1 and Report2)
    Where i have to disable button based on the following conditon:
    i) USER whoever has Admin value 'Y' in my table can access the button.
    for this i've written a Button Condition : Type (EXISTS)
    select 1 from apex_extra_values where rtrim(lower(empname)) like decode((select Admin from apex_extra_values
    where rtrim(lower(empname))=rtrim(lower(V('APP_USER')))),'Y',rtrim(lower(V('APP_USER'))))
    note: i have empname same as my APEx user name. with Admin access 'Y'.
    By using this code i can able to hide the button for users who has no Admin access.
    But my requirement is : i have to show the button even if the user is not Admin, but to grey out (disable the button - no action)
    I tried using javascript function:
    function disableButton(pThis)
    pThis.disabled=true;
    But either of this (exists condtion or JAvascript function) works in my case and not both.
    Any pointer on this would be highlt appreciated.
    Thanks
    Vijay

    Couple of things:
    1. I would never use v('APP_ITEM') but :APP_ITEM - it is faster and there is no need to use this function within an application
    2. The way you are doing this check is not the best approach. You should create an authorization schema and run this once per session. Whatever this authorization is returning as a result you can check using the following Function returning boolean:
    IF apex_util.public_check_authorization ('MY_AUTH') THEN RETURN TRUE; ELSE RETURN FALSE; END IF;
    See this example on authorization issues:
    http://apex.oracle.com/pls/otn/f?p=31517:148
    3. As far as disabling a button is concerned I think I explained the options. I also have an example on that here:
    http://apex.oracle.com/pls/otn/f?p=31517:143
    whereby it is not disabling but hiding a button.
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.opal-consulting.de/training
    http://apex.oracle.com/pls/otn/f?p=31517:1
    -------------------------------------------------------------------

  • Create a derived column based on a value within the file name

    I am importing a CSV file which is easy enough, but I have an issue where I need to manufacture a couple of column values based on the filename of the input.  So this same process will import different types of records to the same table in sql server.
     I need to pull out the record code from the file name.  
    For instance, say I can use the same package to input two different CSV files.  One is named Input_M02_Data.csv and one named Input_B15_Data.csv.  I need to create a derrived column and store the record code there (i.e.:  M02 or B15) based
    on which file it came out of.  
    fyi-
    I also need to create a second column for Dept based off of the file name as well.  M02 is dept 45 and B15 is dept 99  which I also need to insert into this table when I import the data from the .csv file.  
    Any help is greatly appreciated!

    Hi Jason,
    According to your description, you want to add two derived columns based on the file name to also insert into table. One stores the value between two “_” within file name, another stores the department based on that column.
    If in this scenario, we can add a variable FileName that stores the filename, then add the two variables as derived columns like below in the Derived Column Transformation:
    Name:
    SUBSTRING(@[User::FileName],FINDSTRING(@[User::FileName],"_",1)+1,FINDSTRING(@[User::FileName],"_",2)-(FINDSTRING(@[User::FileName],"_",1)+1))
    Dept:
    @[User::Name] =="M02"?"dept 45":@[User::Name] =="B15"?"dept 99":"dept 00"
    The following screenshot is for your reference:
    If there are any other questions, please feel free to ask.
    Thanks,
    Katherine Xiong
    If you have any feedback on our support, please click
    here.
    Katherine Xiong
    TechNet Community Support

  • Compare two columns and formate based on condition

    I know this dead horse has been beaten and I've read my fair share of threads and manuals to no avail..  I have two list that consist of movie titles, holiday movies to be exact.  I'm creating a holiday movie schedule which consist of three(3) columns...A,B and C.  Column A is the Date, Sat, November 17 2012 thru Monday, Dec 24, 2012.  Column C consist of a movie list divided into 2 sections with three subsections each.  Section 1 is animated movies and Section 2 is live action, each subsection, 1.1, 1.2, 1.3, 2.1, 2.2 and 2.3 are lists based on popularity with the kids...low, medium and high respectively.  And finally column B is the movie list relative the column A...the schedule.
    As I write a movie title in column B, I'd like the cell fill to be light red and the corresponding title in column C change to strike through font type.  This way I know I've added the movie title to the schedule...this comes in handy when I ask the kids to help so we have no duplicates in the schedule.  I'm assuming this would take a combination of; Conditional Formatting, cell formulas and perhaps an additional blank column for trigger results.
    I'm including the table, which include an experimental column I was working on.  As an FYI, this has been completed in Excel already, just hoping to get it done in Numbers.
    Thanks for any help anyone can give.
    Date
    Movie Name
    Class
    Sat, Nov 17, 2012
    Animated Christmas Movies
    TRUE
    Lowest Priority Animation
    TRUE
    Frosty Returns
    TRUE
    Sun, Nov 18, 2012
    The Nightmare Before Christmas
    Rudolph and Frosty's Christmas in July
    TRUE
    Rudolph the Red-Nosed Reindeer & the Island of Misfit Toys
    TRUE
    Rudolph's Shiny New Year
    TRUE
    Mon, Nov 19, 2012
    Nothing Like the Holidays
    TRUE
    Medium Priority Animation
    TRUE
    Jack Frost Animation
    TRUE
    Tue, Nov 20, 2012
    Home for the Holidays
    It's Christmas Time Again, Charlie Brown
    TRUE
    Christmas in South Park
    TRUE
    Cartoon Network Christmas Rocks
    TRUE
    Wed, Nov 21, 2012
    Planes, Trains and Automobiles
    Cartoon Network Christmas Yuletide Follies
    TRUE
    Cartoon Network Christmas Vol3
    TRUE
    Twas the Night Before Christmas
    TRUE
    Thu, Nov 22, 2012
    Planes, Trains and Automobiles
    The Little Drummer Boy
    TRUE
    TRUE
    Highest Priority Animation
    TRUE
    Fri, Nov 23, 2012
    Trapped in Paradise
    The Simpson's Christmas
    TRUE
    A Very Special Family Guy Freakin' Christmas
    TRUE
    Family Guy: Road To The North Pole
    TRUE
    Sat, Nov 24, 2012
    American Dad! The Most Adequate Christmas Ever
    TRUE
    A Charlie Brown Christmas
    TRUE
    The Nightmare Before Christmas
    FALSE
    Sun, Nov 25, 2012
    Die Hard
    Frosty the Snowman
    Die Hard 2
    Hooves of Fire
    How the Grinch Stole Christmas
    Mon, Nov 26, 2012
    Gremlins
    Santa Claus is Comin' to Town
    The Year Without a Santa Claus
    Rudolph, the Red-Nosed Reindeer
    Tue, Nov 27, 2012
    The Ice Harvest
    Live Action Christmas Movies
    Lowest Priority
    Wed, Nov 28, 2012
    Reindeer Games
    National Lampoon's Christmas Vacation 2: Cousin Eddie's Island Adventure
    Chasing Christmas
    The Nativity Story
    Thu, Nov 29, 2012
    Bad Santa
    Unaccompanied Minors
    Jingle All the Way
    Jack Frost Live
    Fri, Nov 30, 2012
    The Shop Around the Corner
    The Santa Clause 3: The Escape Clause
    The Santa Clause 2: The Mrs. Clause
    Sat, Dec 1, 2012
    The Bishop's Wife
    Medium Priority
    0
    Bad Santa
    Bad Santa
    Mixed Nuts
    Mixed Nuts
    Sun, Dec 2, 2012
    The Chronicles of Narnia: The Lion, the Witch and the Wardrobe
    Reindeer Games
    Reindeer Games
    The Ice Harvest
    The Ice Harvest
    The Shop Around the Corner
    The Shop Around the Corner
    Mon, Dec 3, 2012
    Miracle on 34th Street B&W
    The Bishop's Wife
    The Bishop's Wife
    Christmas in Connecticut
    Christmas in Connecticut
    The Chronicles of Narnia: The Lion, the Witch and the Wardrobe
    The Chronicles of Narnia: The Lion, the Witch and the Wardrobe
    Tue, Dec 4, 2012
    Mixed Nuts
    Nothing Like the Holidays
    Nothing Like the Holidays
    Home for the Holidays
    Home for the Holidays
    The Family Man
    The Family Man
    Wed, Dec 5, 2012
    Scrooged
    Miracle on 34th Street 1994
    Miracle on 34th Street 1994
    Miracle on 34th Street B&W
    Miracle on 34th Street B&W
    Just Friends
    Just Friends
    Thu, Dec 6, 2012
    Just Friends
    Trapped in Paradise
    Trapped in Paradise
    0
    Highest Priority
    0
    Fri, Dec 7, 2012
    Miracle on 34th Street 1994
    Die Hard
    Die Hard
    Die Hard 2
    Die Hard 2
    Gremlins
    Gremlins
    Sat, Dec 8, 2012

    Hi Stephen,
    Both of these are solvable, and the Date solution cold be similar to that used for the 'stock list' in column C. The Movie Title solution is a different case, though.
    The stock list is edited only occasionally, so requiring the user to unhide column C, add a title, then rehide the column is workable.
    The same is true of the date list, so this too would work with the dates entered into a column that will be hidden, then copied into a visible column with a formula that introduced a detectable difference into the copied version, dependent on the weekday of each date. That difference would be used to trigger the conditional formatting of the cell containing the calculated date as text value. See the example below.
    But the (scheduled) Movie Title column doesn't fit nicely into that mode of operation, as it is edited quite often. As editing, usng the model described, requires making the data column visible, editing the entry (or entries) in that column, then rehiding the column, the hassle factor soon becomes insufferable, if nothing else.
    The first solution I considered (see earlier reply) is workable only if the the formatted table starts and remains the same size in all details (ie. individual row height) as the main table.Any change in row height in the main table not reflected in the auxiliary table immediately destroys the impression of formatting applying to the correct cells. With cells set to wrap text and varying lengths of movie titles, wrapped lines changing the height of individual rows is pretty much unavoidable.
    Best practice here would seem to be to use a separate column to flag the titles already in the "Class" list with a "√" (or flag those not in the list with an "X"), and use conditional formatting to change the background colour of the flagging cell.
    Here's a sample, using "W" to flag the weekend dates in the new column B, and "√" to flag the titles that are on the list already in the new column D.
    I've added two titles to the weekend date, November 18. One is non-existent (as far as I know), so it doesn't appear in the list and doesn't get flagged; the other is chosen from a visible part of the list to show the highlighting of the title in that list. Column "C" (now column "F" due to the insertion of two new columns) is hidden. G, labelled .Class, is the calculated column (D) from the previous message.
    Regards,
    Barry

  • Dynamically assigning variables based on condition in pl/sql

    I have a script which takes 6 input parameters but based on input 1 parameters 2 to 6 will be assigned to different variables. but the condition is not being checked during variable assignment phase. even if table_update is 'P' para,mater 2 is getting assigned to tariff_group instead of offer_id. Is there any way to solve this problem so that variables get assigned based on condition.
    table_update := '&1';
    if(table_update = 'T')
    THEN
         tariff_group := '&2';
         gf_version := &3;
         tariff_table_name := '&4';
         flag := '&5';
         if(no_rows_tariff(tariff_table_name, gf_version, tariff_group))
         THEN
              if(flag = 'I')
              THEN
                   tariff_column_name := column_tariff(tariff_table_name);
              ELSIF(flag = 'R')
              THEN
                   max_gf_tariff(tariff_table_name, gf_version, tariff_group);
              ELSE
                   DBMS_OUTPUT.PUT_LINE('Please enter correct option for update I- Insert R-Rollback');
              END IF;
         END IF;
    ELSIF(table_update = 'P')
    THEN
         offer_id := &2;
         gf_version := &3;
         promotion_table_name := '&4';
         flag := '&5';

    Although you do not say what your problem is, I suspect that it si something like this:
    SQL> !cat t.sql
    DECLARE
       table_update         VARCHAR2(1);
       tariff_group         VARCHAR2(3);
       gf_version           NUMBER;
       tariff_table_name    VARCHAR2(5);
       offer_id             NUMBER;
       promotion_table_name VARCHAR2(5);
       flag                 VARCHAR2(1);
    BEGIN
       table_update := '&1';
       IF table_update = 'T' THEN
          tariff_group := '&2';
          gf_version := &3;
          tariff_table_name := '&4';
          flag := '&5';
       ELSIF table_update = 'P' THEN
          offer_id := &2;
          gf_version := &3;
          promotion_table_name := '&4';
          flag := '&5';
       END IF;
       DBMS_OUTPUT.Put_Line ('TableUpdate: '||table_update);
       DBMS_OUTPUT.Put_Line ('TariffGroup: '||tariff_group);
       DBMS_OUTPUT.Put_Line ('GfVersion: '||gf_version);
       DBMS_OUTPUT.Put_Line ('Tarifftable: '||tariff_table_name);
       DBMS_OUTPUT.Put_Line ('OfferID: '||offer_id);
       DBMS_OUTPUT.Put_Line ('PromoTable: '||promotion_table_name);
    END;
    SQL> @t T TG1 1 TTN1 F
    old  10:    table_update := '&1';
    new  10:    table_update := 'T';
    old  12:       tariff_group := '&2';
    new  12:       tariff_group := 'TG1';
    old  13:       gf_version := &3;
    new  13:       gf_version := 1;
    old  14:       tariff_table_name := '&4';
    new  14:       tariff_table_name := 'TTN1';
    old  15:       flag := '&5';
    new  15:       flag := 'F';
    old  17:       offer_id := &2;
    new  17:       offer_id := TG1;
    old  18:       gf_version := &3;
    new  18:       gf_version := 1;
    old  19:       promotion_table_name := '&4';
    new  19:       promotion_table_name := 'TTN1';
    old  20:       flag := '&5';
    new  20:       flag := 'F';
          offer_id := TG1;
    ERROR at line 17:
    ORA-06550: line 17, column 19:
    PLS-00201: identifier 'TG1' must be declared
    ORA-06550: line 17, column 7:
    PL/SQL: Statement ignoredAs you can see, the initial assignments for compilation purposes are done prior to actually running the code, and the assignment to offer_id is failing.
    If I change offer_id to a varchar and quote the &2, then the compilation assignemnt works, and the actual logic of the script works:
    SQL> !cat t.sql
    DECLARE
       table_update         VARCHAR2(1);
       tariff_group         VARCHAR2(3);
       gf_version           NUMBER;
       tariff_table_name    VARCHAR2(5);
    offer_id VARCHAR2(3);
       promotion_table_name VARCHAR2(5);
       flag                 VARCHAR2(1);
    BEGIN
       table_update := '&1';
       IF table_update = 'T' THEN
          tariff_group := '&2';
          gf_version := &3;
          tariff_table_name := '&4';
          flag := '&5';
       ELSIF table_update = 'P' THEN
    offer_id := '&2';
          gf_version := &3;
          promotion_table_name := '&4';
          flag := '&5';
       END IF;
       DBMS_OUTPUT.Put_Line ('TableUpdate: '||table_update);
       DBMS_OUTPUT.Put_Line ('TariffGroup: '||tariff_group);
       DBMS_OUTPUT.Put_Line ('GfVersion: '||gf_version);
       DBMS_OUTPUT.Put_Line ('Tarifftable: '||tariff_table_name);
       DBMS_OUTPUT.Put_Line ('OfferID: '||offer_id);
       DBMS_OUTPUT.Put_Line ('PromoTable: '||promotion_table_name);
    END;
    SQL> @t T TG1 1 TTN1 F
    30  /
    old  10:    table_update := '&1';
    new  10:    table_update := 'T';
    old  12:       tariff_group := '&2';
    new  12:       tariff_group := 'TG1';
    old  13:       gf_version := &3;
    new  13:       gf_version := 1;
    old  14:       tariff_table_name := '&4';
    new  14:       tariff_table_name := 'TTN1';
    old  15:       flag := '&5';
    new  15:       flag := 'F';
    old  17:       offer_id := '&2';
    new  17:       offer_id := 'TG1';
    old  18:       gf_version := &3;
    new  18:       gf_version := 1;
    old  19:       promotion_table_name := '&4';
    new  19:       promotion_table_name := 'TTN1';
    old  20:       flag := '&5';
    new  20:       flag := 'F';
    TableUpdate: T
    TariffGroup: TG1
    GfVersion: 1
    Tarifftable: TTN1
    OfferID:
    PromoTable:John

  • Tabular Form: Conditional column based on another column in table/form?

    Hi!
    I have 4 columns in table A:
    number (the question number)
    question (the question to be asked)
    type (TEXT, LOV are the 2 valid values)
    answer (the answer with text or a selection from the lov table below)
    I have 2 columns in table B:
    number (the question number)
    values (a single value for the lov's)
    In table B there can be mutiple rows for each number. Table A and table B
    join on the number.
    I want to build a tablular form on table A where for each row either a text
    box or a select list is displayed depending on the contents of the type column.
    So row 1 would display a text box when the type value is text; row 2 would
    display a select list when the type value is lov.
    Is this even possible? How do I refer to the type column in the conditional for the
    answer column? I am guessing that I will need to have 2 answer columns one
    that displays when the type column is TEXT and one that displays when the
    type column contains LOV. This is OK. Setting up the conditional is display is the issue at this point.
    Hopefully I have explained this well enough! :)
    Thanks!
    Dave Venus

    Hi Dave,
    Sorry for not responding sooner - I finish work at 3pm GMT.
    I'll take your first question first (3:28PM posting according to my display - not sure if you are on GMT time?):
    As far as I understand it, using the select_list_from_query() function generates the options that are required in the select list as HTML tags. Each instance of this function should create a SELECT tag and the results of the query should generate one or more OPTION tags within it.
    Second question (4:20PM posting):
    The HTMLDB_ITEM functions are listed in the documentation - here's a link to the online version:
    http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14303/api.htm#sthref2524
    Most of the examples that I have seen have been on this forum - simply search for HTMLDB_ITEM or one of its functions.
    I tend to leave the generation of tabular forms to the wizard as much as possible. The only exceptions are when I need to have access to more than the Primary Key for a row but don't want to show the field on screen. There are examples on the forum about concatenating the HTMLDB_ITEM functions into a single value - this hides ID fields from the user but makes them available to PL/SQL code.
    Third question (5:29PM posting)
    I did try using DECODE in my questionnaire but not for the feature that you needed. Originally, I wanted to use this to display one of a number of different fields (ie, my date, number or string field as appropriate to the question) but this didn't help as I couldn't get back to the right field during the update. If you have decode working for the select lists, then that's great!
    The first column should be hidden or sitting behind a checkbox as this should be the Primary Key for the row and should not be editable by the user nor would it normally be displayed.
    As long as your select statement creates the correct output (albeit that you may need to work on the layout!), you should have an updatable form. However, you will need to have the MRU processes in place and the appropriate buttons that trigger these. When I did my questionnaire, I created the form using a wizard to get all of the processes and buttons and then changed the select statement. If you haven't got the processes and/or buttons, we can go through adding these onto your page.
    Last question (9:08PM posting)
    As explained above, column 1 should normally be hidden. The INPUT tag you detail above is what I would expect to see. The value="6" attribute indicates that 6 is the Primary Key for that row - every row will have the same tag but different values for the "value" attribute. So, if it is hidden and these are the tags you see doing a View Source on the page, then everything is correct.
    OK. So now we have the data on screen and (hopefully?) we have the correct processes and buttons on the page.
    The next step would be validation and update of the data.
    Validation of the data can be handled by a normal page process - I can let you have example code if you want to validate the data (this will also explain how to loop through the rows - there are also methods that you can use to do this in javascript if you want). Updates should be handled by the processes and buttons on the page - again, if you haven't got these we can go through adding them in (although, if you haven't yet formatted your page, you may find it quicker to copy your select statement and create the page again using the same select statement).
    ORA-20001 errors are user defined errors. Do you mean the "data has changed" errors? If so, you will probably need to include the MD5 checksum functionality (it's shown in the document linked above).
    Finally, we'll keep this thread going so that you have all of your workings and my responses in one place, if that's ok with you?
    Regards
    Andy

Maybe you are looking for