Substitute Field Values Case Statement

Hey,
I need help with a CASE Statement to display certain field values based on another field value.
This is the data in table DEPT
DEPTNO       DNAME              LOC
10               ACCOUNTING     NEW YORK
20               RESEARCH         DALLAS
30               SALES               CHICAGO
40               OPERATIONS     BOSTONThis is my select statement.
SELECT DEPTNO, DNAME, 
(CASE LOC
    WHEN 'NEW YORK' THEN ''
  --WHEN LOC = 'NEW YORK' THEN DEPTNO = ''
  --WHEN LOC = 'NEW YORK' THEN DNAME = ''
END) AS LOC
FROM DEPTWhen I uncomment out the two lines I get an error message. The results are
DEPTNO       DNAME              LOC
10               ACCOUNTING     -
20               RESEARCH         -
30               SALES               -
40               OPERATIONS     -I do not want to clear all the values for LOC. I would like to display no values for DEPTNO and DNAME if LOC = 'NEW YORK'. Has anyone ever done this before?
Correct Results...
DEPTNO       DNAME              LOC
-                  -                      NEW YORK
20               RESEARCH         DALLAS
30               SALES               CHICAGO
40               OPERATIONS     BOSTON

Like this?
SQL> ed
Wrote file afiedt.buf
  1  SELECT CASE WHEN LOC != 'NEW YORK' THEN DEPTNO END AS DEPTNO
  2        ,CASE WHEN LOC != 'NEW YORK' THEN DNAME END AS DEPTNO
  3        ,LOC
  4* FROM DEPT
SQL> /
    DEPTNO DEPTNO         LOC
                          NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 IT SUPPORT     LONDON
SQL>

Similar Messages

  • Print out a column value only if another column has a specific value (CASE Statement)

    Hello all,
    I tried many hours to find a solution for the following request but wasn't successful. Maybe you could help me.
    I've using the already existing SQL Views in Microsoft Service Manager to do some basic reporting about my tickets.There is no closed date in the activity tickets so I decided to print out the lastmodified timestamp when the status is "closed".
    That's my query:
    SELECT DISTINCT
    dbo.DisplayStringView.DisplayName AS Status,
    CASE WHEN dbo.DisplayStringView.DisplayName = 'Closed' THEN dbo.DisplayStringView.LastModified ELSE 'NO CLOSED Date' END AS ClosedDate
    FROM dbo.MTV_System$WorkItem$Activity$ManualActivity LEFT OUTER JOIN
    dbo.DisplayStringView ON dbo.MTV_System$WorkItem$Activity$ManualActivity.Status_8895EC8D_2CBF_0D9D_E8EC_524DEFA00014 = dbo.DisplayStringView.LTStringId
    Unfortunatelly I'm not getting the value from dbo.DisplayStringView.LastModified. SQL outputs that it is not possible to convert the string to date/time.
    I think there is a problem with the CASE statement in combination with a value select.
    Any ideas how to print out a column value only if another column has a specific value?

    I think it is the other way if you want the missing date shown as a string.
    CASE
    WHEN
    dbo.DisplayStringView.DisplayName
    =
    'Closed'
    THEN
    Convert( varchar(10),dbo.DisplayStringView.LastModified
    , 101) ELSE
    'NO CLOSED Date'
    END
    AS
    ClosedDate 

  • Naming the evaluated case statement field with concatenating input variable value

    Hi,
    I am trying to add the input variable value to case statement evaluated field like below query:
    declare @Year varchar(4)
    select ProductCode,datepart(mm,Date) MonthValue,
      case when datepart(mm,Date) = 1 then sum(Price) else 0 END AS Jan+@Year,
      case when datepart(mm,Date) = 2 then sum(Price) else 0 END AS Feb+@Year,
      case when datepart(mm,Date) = 3 then sum(Price) else 0 END AS Mar+@Year,
      case when datepart(mm,Date) = 4 then sum(Price) else 0 END AS Apr+@Year,
      case when datepart(mm,Date) = 5 then sum(Price) else 0 END AS May+@Year,
      case when datepart(mm,Date) = 6 then sum(Price) else 0 END AS Jun+@Year,
      case when datepart(mm,Date) = 7 then sum(Price) else 0 END AS Jul+@Year,
      case when datepart(mm,Date) = 8 then sum(Price) else 0 END AS Aug+@Year,
      case when datepart(mm,Date) = 9 then sum(Price) else 0 END AS Sep+@Year,
      case when datepart(mm,Date) = 10 then sum(Price) else 0 END AS Oct+@Year,
      case when datepart(mm,Date) = 11 then sum(Price) else 0 END AS Nov+@Year,
      case when datepart(mm,Date) = 12 then sum(Price) else 0 END AS Dec+@Year
    from Sales_Imports where datepart(yyyy,Date) = @Year
    group by  ProductCode, datepart(mm,Date)
    Please help me any other way as this is not working...
    Thanks,
    Srini

    create table Sales_Imports (ProductCode int, Price int, [date] date)
    insert into Sales_Imports values
    (1,10,'1/1/2014'),(1,109,'2/1/2014'),(1,10,'1/1/2014'),(1,109,'12/1/2014'),
    (2,10,'1/1/2014'),(2,109,'2/1/2014'),(2,10,'10/1/2014'),(2,109,'12/1/2014')
    declare @Year varchar(4)='2014'
    DECLARE @MaxCount INT, @SQL NVARCHAR(max) ,@i INT;
    Set @MaxCount = 12 
    SET @i = 0;
    SET @SQL = '';
    WHILE @i < @MaxCount
    BEGIN
        SET @i = @i + 1;
        SELECT @SQL = @Sql + ', SUM(CASE WHEN datepart(mm,[Date]) = ' + cast(@i AS NVARCHAR(10)) + ' THEN  Price Else 0 END) AS ' +Left(DateName(month,Dateadd(month,@i-1,0)) ,3)+@Year
    END
    SET @SQL = N' SELECT  ProductCode, datepart(mm,Date) MonthValue ' + @SQL 
    + N' FROM  Sales_Imports
     where datepart(yyyy,Date) ='+ @Year + N'group by  ProductCode, datepart(mm,Date)
     Order by ProductCode, datepart(mm,Date)';
    --PRINT @SQL;
    execute (@SQL);
    --Or your original one
    declare @Year varchar(4)
    Set @Year ='2014'
    declare @SQL  Nvarchar(4000)
    SET @SQL=
    N' select ProductCode,datepart(mm,Date) MonthValue,
      case when datepart(mm,Date) = 1 then sum(Price) else 0 END AS [jan' +@year+'],
      case when datepart(mm,Date) = 2 then sum(Price) else 0 END AS [feb' +@year+'],
      case when datepart(mm,Date) = 3 then sum(Price) else 0 END AS [Mar'+@year+'],
      case when datepart(mm,Date) = 4 then sum(Price) else 0 END AS [Apr'+@year+'],
      case when datepart(mm,Date) = 5 then sum(Price) else 0 END AS [May'+@year+'],
      case when datepart(mm,Date) = 6 then sum(Price) else 0 END AS [june'+@year+'],
      case when datepart(mm,Date) = 7 then sum(Price) else 0 END AS [july'+@year+'],
      case when datepart(mm,Date) = 8 then sum(Price) else 0 END AS [Aug'+@year+'],
      case when datepart(mm,Date) = 9 then sum(Price) else 0 END AS [Sep'+@year+'],
      case when datepart(mm,Date) = 10 then sum(Price) else 0 END AS [Oct'+@year+'],
      case when datepart(mm,Date) = 11 then sum(Price) else 0 END AS [Nov'+@year+'],
      case when datepart(mm,Date) = 12 then sum(Price) else 0 END AS [Dec'+@year+']
    from Sales_Imports where datepart(yyyy,Date) = ' + @Year +N' group by  ProductCode, datepart(mm,Date)'
    --print @Query
    Execute (@SQL)
    drop table Sales_Imports

  • Using Field/Column Date Value In Case Statement

    I have code that the first part works (the part that evaluates null). However, it appears the second part doesn't work. The error I get is:
    Data Value out of range
    Can you use the a table column value in a Case statement? What I'm trying to do is: where all mbr06..values are 12/31/9999, then null; if mbr06.. values are equal to or less than today's date, then put the value in mbr02.mbr02_cancel_proc_date..
    Note, the table MBR02 does have dates that go back as far as 11/17/1858..could that be an issue?
    Thanks for any assistance..
                cast((case
                when mbr06.mbr06_exp_date = to_date('31-dec-9999') then null
                when mbr06.mbr06_exp_date <= sysdate then mbr02.mbr02_cancel_proc_date

    The error is due to the CAST, not to the CASE.
    Cause: Value from cast operand is larger than cast target size.Post at least the whole cast ...
    Max
    http://oracleitalia.wordpress.com

  • CASE Statement in Where Condition with Multi Valued parameter in SSRS

    Hi All,
    I am little confused while using CASE statement in Where condition in SSRS. Below is my scenario:
    SELECT
    Logic here
    WHERE
    Date IN (@Date)AND
    (CASE
    WHEN NAME LIKE 'ABC%' THEN 'GROUP1'
    WHEN ID IN ('123456', '823423','74233784') THEN 'GROUP2'
    WHEN ABC_ID IS NULL THEN 'GROUP3'
    ELSE 'GROUP4'
    END ) IN (@GROUP)
    So above query uses WHERE condition with CASE statement from @GROUP parameter. I want to pass this parameter as multi- valued parameter and hence I have used CASE statement IN (@GROUP).
    For @Date one dataset will pass the available and default values and
    for @GROUP parameters, another dataset will pass the available and default values.
    But this is not working as expected. Please suggest me where I am making mistake in the query.
    Maruthu | http://sharepoint-works.blogspot.com

    Hi Maruthu,
    According to your description, I create a sample report in my local environment. It works as I expected. In your scenario, if the selected values from the Date parameter contains some of the Date field values, the selected values from the GROUP parameter
    contains some of GROUPS (‘GROUP1’,’GROUP2’,’GROUP3’,’GROUP4’) and the corresponding when statement is executed , then the dataset returns the corresponding values.
    In order to trouble shoot this issue, could you tell us what results are you get and what’s your desired results? If possible, you can post the sample data with sample dataset, then we can make further analysis and help you out.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • SQL Query CASE statement using two fields

    Hi,
    I have two fields. One is called rescategory1, the other is called rescategory2.
    I'm not sure if its a CASE statement I need or some sort of WHERE clause but I want to create a query that does the following or something similar:
    CASE rescategory2
    WHEN rescategory1 = '44' AND rescategory2 = '1' THEN 'Backup'
    WHEN rescategory1 = '44' AND rescategory2 = '2' THEN 'Hardware'
    END AS [Resolution Sub Category]
    Basically, I'm looking to give rescategory2 a value based on that of rescategory1 and rescategory2 combined.
    How do I write this?
    Cheers
    Paul

    do you mean this?
    rescategory2 = CASE
    WHEN rescategory1 = '44' AND rescategory2 = '1' THEN 'Backup'
    WHEN rescategory1 = '44' AND rescategory2 = '2' THEN 'Hardware'
    END
    ie assigning value for rescategory2
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Navigate Value Interaction - Case Statements

    Hi,
    I am having problems using the navigate value interaction feature in OBIEE. The columns I am using to navigate contain case statement bin filters, is it not possible to use value interaction on these type of fields?
    For example bin grouping are created in both reports and are identical but the interaction does not work
    . TIMESTAMPDIFF(SQL_TSI_MONTH,CURR... is between 0 and 6
    . TIMESTAMPDIFF(SQL_TSI_MONTH,CURR... is between 7 and 12
    Can anyone advise a workaround other than creating the column in the rpd.
    Thanks

    I gave a detailed decision in a similar topic Obiee Report Help

  • How to update session state from form field values without submitting page?

    Hi,
    I am new to Oracle APEX. I am using Oracle Apex 4.2 on Oracle 11g release 2. The problem is that when I am entering data on a form, when I enter a value in one field and move to the next field, how can I use the value of first field in the validation procedure of next field? I know that when we enter data in fields, the session state is not updated with these values until we submit the page... right... but I have seen that if there is a control of List box type, then Apex gives an option "Action When List changes" where we can choose option to update corresponding session state field with the value of list box item, without submitting the page.
    Now my questions is why this option is only available for List box items? why not for other item types like Text box, Check box,... ? can someone please help me with this?
    (the issue with update of session state depending on page submitting, is that we need a complete network round trip from client to server in order for it. However if we can update session state variables without submitting page, then we can avoid this network traffic).
    Any help will be greatly appreciated. Thanks in advance.

    Create a dynamic action on change and run a PL/SQL process there with the following code:
    BEGIN
       NULL;
    END;Page items to submit > your item.
    This will set the session state without submitting the form.
    Further examples here:
    http://apex.oracle.com/pls/apex/f?p=31517:229
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.apress.com/9781430235125
    http://apex.oracle.com/pls/apex/f?p=31517:1
    http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
    -------------------------------------------------------------------

  • How to use a parameter field value as a substring in a "like" statement?

    Hi all,
    I'm trying to use a parameter field in a Record selection formula where the parameter field value would be a substring of the data stored in the field.
    My parameter field (SlctResearcher) is constructed as follows:
    Type: string
    List of Values: static
    Value Field: (Reports) RptAuthors
    (in Value Options) Allow custom values?: True
    {Reports.PubDate} in DateTime (2009, 04, 01, 00, 00, 00) to DateTime (2010, 03, 31, 23, 59, 59) and
    {Reports.RptAuthors} like "*{?SlctResearcher}*"
    When I hit F5 to generate the data, I get no results (and the parameter prompt field does not even come up...)
    If I modify the formula to put a hard-coded string, like
    "*Jones*"
    after the 'like', I get results (all the reports where "Jones" is a substring in the RptAuthors string.) If I modify the formula to just use the parameter field without the quotes/stars like:
    {Reports.PubDate} in DateTime (2009, 04, 01, 00, 00, 00) to DateTime (2010, 03, 31, 23, 59, 59) and
    {Reports.RptAuthors} like {?SlctResearcher}
    I do get the parameter prompt field, but still no results even if I put in a valid substring value (since it is not searching for a substring anymore...)
    How can I do this?
    Thanks,
    Will

    1st thing... Make a copy of your report before doing anything!!!
    To use a SQL Command, you'll want to open the Database Expert and look at the Current Connections. Expand the data source and the 1st option you see is the Add Command option.
    To find the SQL That CR is currently using, choose Database from the menu bar and select Show SQL Query...
    You can copy this and paste it directly into the command window. (If you you can write your own SQL you don't need copy CR's, it's just an option.)
    You'll also want to take not of any parameters that you have, you'll need to add them the the Parameter List of the command as well... be sure to spell them EXACTLY as they are in the design pane.
    Anyway, once the SQL statement is in the Command window you'll be able to alter the WHERE clause to use the wild cards.
    For future reference... What type of database are you reporting against???
    Jason

  • SQL Expression Field - Combine Declared Variable With Case Statement

    Hello All, I have been using Crystal & Business Objects for a few months now and have figured out quite a bit on my own. This is the first real time I have struggled with something and while I could do this as a Formula Field I would like to know how to do this as a SQL Expression. Basically I want to create a SQL Expression that uses a CASE statement but I wanted to make the code a little more efficient and employ a variable to hold a string and then use the variable in the CASE statement. The expression editor accepts the CASE statement OK but I don't know how to declare the variable. Please assist with the syntax?
    This is what I have:
    CASE
       WHEN u201CDatabaseu201D.u201DFieldu201D = u2018Hu2019 THEN u2018Hedgeu2019
       WHEN u201CDatabaseu201D.u201DFieldu201D = u2018Pu2019 THEN u2018PVIu2019
       ELSE u2018Noneu2019
    END
    This is what I want:
    DECLARE strVar AS VARCHAR(25)
    strVar =  u201CDatabaseu201D.u201DFieldu201D
    CASE
       WHEN strVar = u2018Hu2019 THEN u2018Hedgeu2019
       WHEN strVar = u2018Pu2019 THEN u2018PVIu2019
       ELSE u2018Noneu2019
    END

    Hi Todd,
    Please use the following for loop; your problem will be solved.
    Local StringVar str := "";
    Local NumberVar strLen := Length ({Database.Field});
    Local NumberVar i;
    For i := 1 To strLen Do
           if {Database.Field} <i> = "H" then str := "Hedge"
            else if {Database.Field} <i> = "P" then str := "PVI"
            else str := "None"; exit for
    str
    Let me know once done!
    Thank you,
    Ashok

  • Wildcard value in case statement

    Hi,
     How would I use a wildcard value in my case statement. I evaluate a string value of numbers and try to do this "1234***" but it doesn't work. "***" represents any 3 number. 
    Please advise.
    Thanks
    dphan128

    You could mark one of the cases as "Default", and that case will execute when no others match. If you want to explicitly run that case only if the first 4 numbers are "1234", then you need to pre-process the string.
    See here for the same exact question.

  • Problem to identify values in a case statement.

    Hi Friends,
    Total number of records in my report should be divided by 5 and to be alloted into 5 grades in Grade column.
    This is what I have done so far in my report with following layout.
    S.No - Col A - Col B - Col C - Grade ( Colums A,B,C will be hidden in Report)
    *****Column C will have only 5 values at max ( 0.0, 0.2, 0.4, 0.6, 0.8).The below example is for 6 records in a report.The same will be applied for 7,8,9,10 records.
    In column A: MAX(cast(RCOUNT(1) AS DOUBLE))/5 ( Ex : 6/5 = 1.2)
    In Column B: Truncate(MAX(cast (RCOUNT(1) as double)/5), 0) ( Ex : 6/5 = 1.0)
    In Column C: Col A- Col B ( EX:1.2 - 1.0 =0.2)
    (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0))
    Now In Grade coulum I want to use this column C to Grade the records with case statements in it.
    I am trying to use the following case statement for Grade Coulmn
    Case
    when (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0)) = 0.0 then .........
    when (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0)) = 0.2 then .............
    when (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0)) = 0.4 then .............
    when (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0)) = 0.6 then ........
    when (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0)) = 0.8 then .....
    end
    Case statement works gud for 0.0 but not for other 4 values.
    It is unable to identify other 4values.
    Please tell me, how can I make case statement work for all values in above scenario.
    Thanks in Advance,
    Varsha.
    Edited by: Varsha on Nov 28, 2010 6:23 PM

    In column A: MAX(cast(RCOUNT(1) AS DOUBLE))/5 ( Ex : 6/5 = 1.2)
    In Column B: Truncate(MAX(cast (RCOUNT(1) as double)/5), 0) ( Ex : 6/5 = 1.0)
    In Column C: Col A- Col B ( EX:1.2 - 1.0 =0.2)
    (MAX(cast(RCOUNT(1) AS DOUBLE))/5 - Truncate(MAX(cast (RCOUNT(1) as double)/5), 0))Change the formula a bit by adding the by dim value for the MAX column.
    Column A: MAX(cast(RCOUNT(1) AS DOUBLE) by DimTable.Column)/5
    Column B: Truncate(MAX(cast (RCOUNT(1) as double) by DimTable.Column)/5, 0)
    Column C: MAX(cast(RCOUNT(1) AS DOUBLE) by DimTable.Column)/5 - Truncate(MAX(cast (RCOUNT(1) as double) by DimTable.Column)/5, 0)
    now write a case statement on top column c, based on your logic every 5th record will have a value 0.0
    Note: Dimtable.column is the table.column for which the row count is taken.
    Thanks,
    Vino

  • Handling Exceptions with case statement - convert Exception to int value

    Hi,
    I'm developing a web app, with servlets.
    I'm catching Exceptions in my servlets, for example I would like a user to insert data into a form. If the data cannot be converted into a integer value a java.lang.NumberormatException is thrown.
    I would like to catch this and then create a message giving a more specific clue to what happened. Unfortunatly it's possible that other exceptions could be caught, so I want to be able to check which type of Exception has been caught.
    I started writing a getErrorMessage(int Code) class. The method has a case statement which just checks the code and return the appropriate message.
    This worked well for SQL exceptions as they provide a getErrorCode method. But I was wondering is there any way to convert other Exceptions such as
    java.lang.NumberormatException into an integer value?
    Cheers

    Exceptions have their types (classes) and messages (and maybe an embedded exception). That is, they have much richer internal status then an integer.
    Why should they be "converted" to integers?
    FLAME on
    Gone are the days of good old errno.
    FLAME off

  • Using Case statement instead of IF in formula fields

    Hi,
    Can I use Case statement instead of IF in formula fields?If yes,please specify the syntax.
    regards,
    sunitha

    Hi Sunitha,
    You can surely use case statement instead of the If statement. The syntax for the case statement is :
    Select [1 To n]
      Case "Condition a", "Condition b":
               "c"
      Case "Condition d","Condition e":
                "f"
      Default:
    Hope this helps you!
    Regards,
    Anindita

  • TFS 2012 - How to Import bulk of historical WI's via EXCEL, with already progressed values in State field within the excel

    A user wants to import into TFS, ~ 500 historical bugs that were created and maintained in an excel template outside TFS. While they were maintained outside TFS, the user changed among others, the value of their Status field as well, i.e. there are bugs
    in a progressed state e.g. already in status Closed.
    Since normally in TFS, one could not directly create a new bug in State = Closed, an error would be yielded when trying to import them as is into regular Team Project. Can u please advise how to easily solve this, without hindering the state diagram of the
    model in TFS, and as possible by utilizing GUI of Excel / TFS / other available tool for this purpose ?
    Kind thx,

    Hi!
    You may use excel features for this. Simply copy & paste the state column:
    Publish 500 new bugs.
    Copy & paste the state column from your source table and publish.
    But the reason for state may not be correct. So you may use the more difficult way:
    For Source table create the custom state columns (for the cmmi template states Proposed->Active->Resolved->Closed) by this rules:
    (Active state column) if (source state == "Active" || source state == "Resolved" || source state == "Closed") { value = Active } else { value = source state }
    (Resolved state column) if (source state == "Resolved" || source state == "Closed") { value = Resolved } else { value = source state }
    (Closed state column) if (source state == "Closed") { value = Closed } else { value = source state }
    Then Publish new bugs.
    Copy&paste (Active state column) values and publish.
    Copy&paste (Resolved state column) values and publish.
    Copy&paste (Closed state column) values and publish.

Maybe you are looking for

  • Preview files don't open in Reader

    I consider Preview to be a swiss army knife when it comes to working with PDF and graphic files. Lately (since the last OS update?) PDF files created in Preview won't open in Adobe Reader. Reader either crashes or just becomes unresponsive. I've been

  • Duplicate Messages In Archive Mailbox

    We are running Exchange 2010 sp1 rollup 8. Hub Transport, CAS, Mailbox, UM running on same server. We have recently started testing archiving. We created a test archive database and enabled archiving for a group of test users, pointing the archive ma

  • Adobe PDF to page issue

    Has there been any resolution as far as using Authorware 6.5 or later to open an Acrobat file to a specific page? I would like to have Authorware launch the PDF at a specific page, and would like to accomplish this with code rather than a plug-in. Is

  • Lost all applications after upgrading

    Hi, I've just got a 3GS and was trying to sync with itunes to activate the phone Here's what happened: 1. Did a back up with previous phone (3G) with iTunes. 2. Connect new 3GS with iTunes. 3. Sync/restore new 3GS 4. Update phone firmware to version

  • Motorola Surfboard SBG6580 in wireless mode??

    Anyone know if Motorola's Surfboard SBG6580 cable modem can be used in wireless mode with an iMac? There's a warning *inside* the box that it only works with ethernet.  Software install fails, blaming it on Adobe Air.