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,
Srinicreate 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_dateThe 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.comHi 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
Pauldo 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.
ThanksI 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,
Will1st 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
ENDHi 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
dphan128You 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 PMIn 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?
CheersExceptions 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,
sunithaHi 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 -
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
-
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.