call the statement box inside the case statement
I am writing a program which requires me to run a statement box inside another case statement. Although this sounds like a simple thing, I need to be able to call the case statement using a sequence structure, where s1 sends the true value to the case, s2, a fake. Then I need to record the results of this instruction box in a text file. Attatched is a simplified version of what I'm trying to do. Please note that the way my program runs may not call the case statement without using a sequence structure, two nesting box instructions is not feasible. I hope someone out there can help me because I was stuck trying to find this for awhile.
Thank you
LVStudent wrote:
[...] I can't call the case statement without using a sequence structure
Yes you can. You just need to be smart.
LVStudent wrote:
I don't think I can use a state machine to fix this.
I think you probably can.
With respect to your original post. What are these s1 and s2 are you talking about? My opinion on the matter, it is that you want to select a case based on the values of several controls Boolean. If this is correct, I do this:
Build your Boolean controls in a table, convert the table number and insert it into the structure of your business. No button pressed = 0, s1 = only 1, s2 = only 2 both = 3. This works for Boolean values as much as you want and is an easy way to make a decision that depends on many entries.
Tags: NI Software
Similar Questions
-
Check the box of a CASE for a Collection of Apex statement
Attempt to use a case statement to determine the day of the week in the field of LINEITEM_DATE2, then
Place the REG_HOURS in the new columns in the collection representing the days of the week.
The case statement below (in bold) just doesn't. I even tried when a simple and hardcode
a value. So is it possible that way?
I / P looks like this___
ATT_CODE REG_HOURS LINEITEM_DATE2
P 4 JUNE 14, 10
P 8 JUNE 16, 10
P 2 JUNE 14, 10
P2 8 15 JUNE 10
Collection of the O/P should look like this___ (light version)
ATT_CODE Monday Tuesday Wednesday
6 8 P
P2 8
declare
date of V_DATE;
Monday varchar (4): = '0';
Start
If htmldb_collection.collection_exists ("TIMECOLLECTION") = FALSE
then htmldb_collection.create_collection (p_collection_name = > 'TIMECOLLECTION');
commit;
on the other
C1 in (select collection_name, seq_id)
of htmldb_collections
where collection_name = "TIMECOLLECTION")
loop
() htmldb_collection.delete_member
p_collection_name = > c1.collection_name,
p_seq = > c1.seq_id);
commit;
end loop;
end if;
-V_DATE: = to_date(:A_CURRENT_MONDAY_WEEK,'DD-MON-RR');
V_DATE: = to_date (June 14, 10 ',' DD-MON-RR');
for rec in (select
ATT_CODE,
REG_HOURS,
LINEITEM_DATE2 as HOUR,
CASE
WHEN to_date (LINEITEM_DATE2, 'DD_MON_RR') = to_date (V_DATE, 'DD_MON_RR')
THEN REG_HOURS
ELSE ' 0'
END like Monday
of TRANSACTIONTIME
where: A_BADGE = BADGE
and LINEITEM_DATE2 > = V_DATE
and LINEITEM_DATE2 < = V_DATE + 6)
loop
() htmldb_collection.add_member
p_collection_name = > 'TIMECOLLECTION ',.
p_c001 = >-1,
p_c003 = > rec. HOUR,.
p_c004 = > rec. ATT_CODE.
p_c005 = > REC CC,.
p_c006 = > rec. PC_ID.
p_c007 = > rec.WO,
p_c008 = > Monday.
p_c009 = > V_DATE + 1,
p_c010 = > V_DATE + 2,.
p_c011 = > V_DATE + 3,
p_c012 = > V_DATE + 4.
p_c013 = > V_DATE + 5.
p_c014 = > V_DATE + 6);
end loop;
END;Hello Shelly,
V_DATE's date , it means that you needn't to_date:
CASE /*WHEN to_date(LINEITEM_DATE2, 'DD_MON_RR') = to_date(t_date, 'DD_MON_RR')*/ WHEN LINEITEM_DATE2 = t_date THEN REG_HOURS ELSE '0' END as monday
I guess that LINEITEM_DATE2 is of type date .
If you want to compare without time then
CASE /*WHEN to_date(LINEITEM_DATE2, 'DD_MON_RR') = to_date(t_date, 'DD_MON_RR')*/ WHEN trunc(LINEITEM_DATE2) = trunc(t_date) THEN REG_HOURS ELSE '0' END as monday
I also think that:
p_c008 => monday,
Must be:
p_c008 => rec.monday,
Lev
Published by: the on June 23, 2010 13:12
-
EXTRACT function can be used directly in the CASE statement WHEN
I wrote the following SELECT statement. The function 'calc_time_diff' is a stored function that subtracts two timestamps and returns the result to the total number of seconds. My DBA does not 'calc_time_diff' as a stored function, then, I replaced the third line (in bold) in the SELECT statement with this:
COUNTY ( BOX WHEN (extract (DAY OF v_end_ts-v_st_ts) * 24 * 60 * 60) +)
(extract (HOUR FROM v_end_ts-v_st_ts) * 60 * 60) +.
(excerpt (v_end_ts-v_st_ts MINUTE) * 60) +.
extract ((DEUXIÈME à PARTIR de v_end_ts-v_st_ts) < 3600 THEN 1 END) less_than_1_hrs_count
But the CASE above does not work. It returns the same value as COUNT (*). If the total number of tickets is 32 output will be
total_tickets less_than_1_hrs_count
32 32
If I call the "calc_time_diff" then I get the correct result. What I'm doing wrong here?
**********************************************************************************************************************************************************************
SELECT
Count (*) total_tickets,
COUNTY ( CASE WHEN END of calc_time_diff (t.created_date, h.closed_date) < 3600 THEN 1) less_than_1_hrs_count
OF n01.cc_ticket_info t
JOIN IN-HOUSE
(SELECT ticket_id, MAX (created_date) closed_date
OF n01.cc_ticket_status_history
WHERE ticket_status = 'CLOSED' AND created_date > = 18 August 2013 ' AND created_date < (to_date('08/24/2013','MM/DD/YYYY') + interval '1' DAY)
GROUP BY ticket_id
) h
WE (t.ticket_id = h.ticket_id)
INNER JOIN n01.cc_ticket_notes n
WE (n.created_date = h.closed_date)
WHERE (t. ticket_status = 'NOTIFICATION' t.ticket_status 'CLOSED' = GOLD) AND t.created_date > = 18 August 2013 ' AND t.last_changed < to_date('08/24/2013','MM/DD/YYYY') + interval '1' DAY);
***********************************************************************************************************************************************************
create or replace
FUNCTION calc_time_diff)
p_st_ts N01.cc_ticket_info. Type of LAST_CHANGED %,
p_end_ts N01.cc_ticket_info. Type of LAST_CHANGED %)
RETURN NUMBER
AS
v_no_sec NUMBER;
v_st_ts N01.cc_ticket_info. Type of LAST_CHANGED %;
v_end_ts N01.cc_ticket_info. Type of LAST_CHANGED %;
BEGIN
v_st_ts: = p_st_ts;
v_end_ts: = p_end_ts;
SELECT (extract (DAY OF v_end_ts-v_st_ts) * 24 * 60 * 60) +.
(extract (HOUR FROM v_end_ts-v_st_ts) * 60 * 60) +.
(excerpt (v_end_ts-v_st_ts MINUTE) * 60) +.
excerpt ((SECOND from v_end_ts-v_st_ts)
IN v_no_sec
DOUBLE;
Return v_no_sec;
END calc_time_diff;
Hello
You don't need a function defined by the user or the EXTRACT to find the difference between two timestamps.
SELECT COUNT (*) AS total_tickets
, COUNTY ( BOX WHEN h.closed_date < t.created_date="" +="" interval="" '1'=""> )
THEN 1
END
) AS less_than_1_hrs_count
...
I hope that answers your question.
If not, post a small example of data (CREATE TABLE and only relevant columns, INSERT statements) for all of the tables involved and the results desired from these data.
Point where the above query is to produce erroneous results, and explain, using specific examples, how you get the right results from data provided in these places.
If you change the query at all, post your modified version.
Always say what version of Oracle you are using (for example, 11.2.0.2.0).See the FAQ forum: https://forums.oracle.com/message/9362002
-
CALL THE PROCEDURE IN THE SQL STATEMENT
Why we cannot call a procedure inside the SQL statement?Hello
Usually when you select an item should return you data. In the case of a procedure, you cannot return any return value from the procedure directly it has to be done through some settings and to access these settings, you cannot use a simple sql statement. Where as in a function, you must return one of data that can be easily obtained accordingly.
see you soon
VT
-
problem of data flow in the case structures (using a state machine)
Good day everyone.
I'm having a problem with the flow of data between the structures of the case.
I try to use an example of a state machine for this simple problem. but when I try to send data of a box structure to change the State of the code. It will change not in the desirable output, instead, it offers the possibility that the exit options emul.
could someone please point what I'm doing wrong here. Any kind of help would be very appreciated.
With a quick glance at your photos a question you have is that you use not data flow. You write your status updated in local variables value. Your State should pass through the case structures are a single wire. Playback of your order "Enum", happened in the register shift on the right side of your loop probably get running and reading before any processing occurs within the structure of your business. That's why you're reading the old value of the State and not the update. or have a classic case of a race condition in your code.
-
HelloHow can I convert a code for the below sql case statement:
If)
(length of (tmp_co_orig_val) < = 0 OR tmp_co_orig_val < = 0 OR tmp_co_orig_val == 1 OR tmp_co_orig_val > = 9999999)
OR
((tmp_co_orig_val == 999999 AND (length of (tmp_rcr_orgn_ltv_rt) < = 0 OR tmp_rcr_orgn_ltv_rt < tmp_rcr_orgn_ltv_rt > 1.3 GOLD 0.15)))
Start
tmp_collatvalue = «»
tmp_msg_cd = 115
end
Is the case statement below that I wrote is correct. I don't have an environment now to test. Please advice.
BOX WHEN (CHAR_LENGTH (tmp_co_orig_val) < = 0 OR tmp_co_orig_val < 0 OR tmp_co_orig_val = 1 OR tmp_co_orig_val = > = 9999999)
OR (tmp_co_orig_val = 999999 AND (CHAR_LENGTH (tmp_rcr_orgn_ltv_rt) < = 0 OR tmp_rcr_orgn_ltv_rt < tmp_rcr_orgn_ltv_rt > 1.3 GOLD 0.15))
THEN tmp_collatvalue IS NULL AND tmp_msg_cd = 115
END
Hello
937454 wrote:
Thanks Frank. Really helps. But I have to write a sql statement
But can you also specify, if I made a mistake in my code, or it's ok.
There are no CASES reported in Oracle SQL.
Oracle SQL has BOX expressions, but they only return a single value. You cannot set 2 columns in the same expression BOX.
Perhaps the best thing to do in pure SQL for you is to write a CASE expression, very similar to the CASE statement above, in a subquery and use the results of this in 2 separate expressions of BOX (very simple) in a Super application.
-
I got confused on this CASE
(1) SELECT BOX WHEN 111 = "111" THEN 'YES' ELSE ' ' END OF THE DOUBLE - YES
(2) SELECT CASE WHEN COALESCE (111 111) DOESN'T = "111" THEN 'YES' ELSE ' ' END OF THE DOUBLE - YES
(3) SELECT CASE WHEN COALESCE (111, '111') = '111' THEN 'YES' IS ' ' END OF THE DOUBLE
ORA-00932: inconsistent data types: expected NUMBER obtained TANK
What exactly the things happening between 2 & 3. ' nt it implicitly convert as case 2 is because that in case 3, the first value is anyway not null as CAS2... This leads to confusion.
I have read the Oracle documentation and there is an implicit data type conversion table. It also indicates that can be converted. There is always some confusion raised. Anyone could wrap this confusion?
No, the function coalesce requires that all entries to be of the same data type because they are arguments of this function.
Conversion of implicit data type occurs generally when things are compared with operators (as you do in examples 1 and 2.
There is not many functions/procedures of this nature that the mixed data types and convert them for you.
So, it is nothing to do with the CASE statements, it's in with him COALESCE function. It is overloaded for particular data types, but it requires all arguments to be of the same data type.
-
Question of the CASE statement
Is it OK to mix conditions inside the case statement? as for example:
SUM (CASE WHEN b.SUPPLIER_NUM = 12345 AND c.VPN IN ('3245', '5345', '87894') THEN a.TRAN_AMT ELSE 0 END) SUMSPEND_MOS
???
I put in parentheses between the two conditions?
SUM (CASE WHEN (b.SUPPLIER_NUM = 12345 AND c.VPN IN ('3245 ', '5345', ' 87894')) THEN a.TRAN_AMT ELSE 0 END) SUMSPEND_MOS
is this legal syntax? because its not complaining do not, but I want to just make sure that these things are good to use and the data comes right back.
Thank you!Kodiak_Seattle wrote:
Is it OK to mix conditions inside the case statement? as for example:SUM (CASE WHEN b.SUPPLIER_NUM = 12345 AND c.VPN IN ('3245', '5345', '87894') THEN a.TRAN_AMT ELSE 0 END) SUMSPEND_MOS
???
Yes, you can do that. The conditions must be related somehow.
I put in parentheses between the two conditions?
SUM (CASE WHEN (b.SUPPLIER_NUM = 12345 AND c.VPN IN ('3245 ', '5345', ' 87894')) THEN a.TRAN_AMT ELSE 0 END) SUMSPEND_MOS
You have no need, but if it helps you (or one who has to maintain the code) to understand it better, then go ahead. The cost can be one millisecond extra when the query is compiled (it will run everything as fast so be it), and the benefits can be enormous.
I find that formatting code contributes much more clarity to have additional parentheses. Why not use something like that?
SUM ( CASE WHEN ( b.SUPPLIER_NUM = 12345 AND c.VPN IN ('3245', '5345', '87894') ) THEN a.TRAN_AMT ELSE 0 END ) AS SUMSPEND_MOS
If you have really complicated conditions, where you mix ANDS and ORs, then you should certainly use parentheses. It goes the same for the WHERE clause.
is this legal syntax? because its not complaining do not, but I want to just make sure that these things are good to use and the data comes right back.
The syntax is fine.
If the data comes in good or bad is another matter. What data are, and what you mean by 'comes back good' (in other words, what results do you get off these data)? -
Syntax of the case statement / WHEN
The table I use a depreciation per fiscal year and the fiscal period. I try to have the amount of depreciation to go to 2 different columns based on the fiscal year and the fiscal year. I'm doing it with a nested case statement. I know that is not correct, because I get the message ORA-00905. I'm relatively new to sql and it is contribtuing to my problem as well. Here is the code I have and suggestions / corrections would be appreciated. Thanks for the help...
SELECT
lao PDR. DEPTID as DEPTID,
lao PDR. ASSET_ID as ASSET_NO,
PA. Descr as DESCRIPTION,
lao PDR. ACCOUNT_AD as AD_ACCT,
PDL. DE_ACCT, to take into ACCOUNT
lao PDR. ADEATH as AMT_DEPR,
PDL. JOURNAL_ID as JRNL_ID,
PDL. JOURNAL_DATE as JRNL_DT,
lao PDR. FISCAL_YEAR as FY,
lao PDR. ACCOUNTING_PERIOD AP,
CASE
WHEN RDP. FISCAL_YEAR = 2014 THEN
WHEN RDP. PERIOD ACCOUNTANT = 11 THEN pdr. DEPR
END AS CURR_MONTH,
CASE
WHEN RDP. FISCAL_YEAR <>2014
WHEN RDP. ACCOUNTING PERIOD <>11 THEN pdr. DEPR
END AS PRIOR_MONTH
OF PS_DEPR_RPT pdr
INNER JOIN PS_DIST_LN pdl
THE pdl. BOOK = pdr. BOOK
AND pdl. BUSINESS_UNIT = pdr. BUSINESS_UNIT
AND pdl. FISCAL_YEAR = pdr. FISCAL_YEAR
AND pdl. ACCOUNTING_PERIOD = pdr. ACCOUNTING_PERIOD
AND pdl. ASSET_ID = pdr. ASSET_ID
AND pdl. CF_SEQNO = pdr. CF_SEQNO
INNER JOIN PS_ASSET PA
WE pa. ASSET_ID = pdl. ASSET_ID
AND pa. BUSINESS_UNIT = pdl. BUSINESS_UNIT
WHERE
lao PDR. BUSINESS_UNIT = "A0465.
AND pdr. BOOK = 'RUN '.
AND ((pdr. FISCAL_YEAR = 2014 AND pdr. ACCOUNTING_PERIOD = 11) OR (pdr. FISCAL_YEAR = 2014 AND pdr. ACCOUNTING_PERIOD = 10))
Hello
2713822 wrote:
Thank you... I appreciate the information you provide when you answer these questions. I always try to get the amount (from the same column) for 2 rows in different columns. I tried the LAST_VALUE and LAG but it took a long time for the queries to run, I'm looking for another way to do the same. I'm only using SQL to retrieve data. I don't have the ability to create or insert.
I looked the information above and the CASE statement to look like this:
CASE
WHEN RDP. FISCAL_YEAR = 2014
AND pdr. ACCOUNTING_PERIOD = 11
THEN the RDP. ADEATH AS CURR_MONTH
ON THE OTHER
lao PDR. ADEATH AS MONTHS PREVIOUS
END
But I'm now getting an "ORA-00905: lack of keyword" message.
What I'm trying to do is to draw 2 lines 1 to 2014 / 11 and another for 2014 / 10. The amount for the period 2014 / 11 should go in the current column and the amount for the period 2014 / 10 should go in the previous column.
Before current assets management
01 AB01 50.01 50.03
....
If you want to give an alias for a column, then you can say "AS nome_alias" after that tell you what that is in this column.
'AS nome_alias' applies to the entire column. Cannot use 'alias_name' in the middle of an expression, for example, in the middle of a CASE expression, before the END keyword.
If you want to have 2 separate output columns, curr_month and prior_month to your output, you must then 2 separate columns in your SELECT clause. for example:
SELECT pdr.branch
pdr.asset
CASE
WHEN pdr.fiscal_year = 2014
AND pdr.accounting_period = 11
THEN pdr.depr
END AS curr_month
CASE
WHEN...
THEN...
END AS prior_month
PDR
;
If post you some sample data (CREATE TABLE and INSERT statements), the results and explanations, I could show you how to complete the... sections.
To find out what version of Oracle you have, use
SELECT *.
SINCE the release of v$.
The output can be messy, like this:
BANNER
-------------------------------------------------------------------
CON_ID
----------
12 c Oracle database Release 12.1.0.1.0 - 64 bit Production
0
PL/SQL Release 12.1.0.1.0 - Production
0
CORE Production 12.1.0.1.0
0
AMT for 64-bit Windows: Version 12.1.0.1.0 - Production
0
NLSRTL Version 12.1.0.1.0 - Production
0
The important thing is the number 5 parts on the first line; 12.1.0.1.0 in the example above.
-
can we use alias name in the case statement?
Select sal,
Sal case
When 500 then 'low '.
When 5000 can 'high '.
of another "medium".
cases of termination
EMP;
OUTPUT
case of SAL
----- --------
4587 way
5000 high
.. .so I have worn instead of cases at the exit?
Yes. Contrary to the statements of CASE in PL/SQL, SQL CASE expressions like this ends with 'end', not 'end of case. Your use of the terminal 'deal' was just an alias the column as the 'CASES '.
select sal, case sal when 500 then 'low' when 5000 then 'high' else 'medium' end range from emp;
-
By the way the presentation Variable in the Case of the ReportColumn statement
Hi all
I have I need to pass the presentation column that contains the date value in the column of the report which is to be set to zero in this requirement.
That is to say the case statement is like that
where column1 is null then 'variable presentation"is the value of the column.
someone you will suggest how to pass the variable to the presentation to the column of the report.
Thank you
Yogi.Check the data type of the column 'time '. ' ' count of the parent.
the properties of column ROM-> data format
I guess his type of tank, if yes, then
cases where "Time". "" parent effective ' is null then ' @{parent_effective_from}' another 'Time '. "" end of parent from to.If the date is set then the default
cases where "Time". "" parent effective ' is null then @{parent_effective_from} {default} else 'Time '. "" end of parent from to.or else try as below
Date ' @{parent_effective_from} {2010-01-21}'Published by: Srini VIEREN on 12 April 2013 13:24
Try other options as stated above
Published by: Srini VIEREN on 12 April 2013 13:27
Published by: Srini VIEREN on 12 April 2013 13:33
-
Help: How to use the Case statement in the ODI11g Interface?
Hello
My basic source I get 'Year' values and I want that these values result code in the interface and after translation want to push on the target system.
Example:
Database source, I get value for
Year
2010
2011
2012
When I get the year 2010 I want to change the value in "FY10".
When I get year 2011 I want to change the value in "FY11.
and even for the year 2012 to "FY12.
I've tried to make the Case statement, but had no success.
I don't want to create the lookup table in the source system.
Any help in this matter.
Thank you
Concerning
Sher
Published by: Sher Ullah Baig on August 26, 2012 17:52CASE
WHEN source_column = '2010' THEN 'FY10.
WHEN source_column = '2011' and THEN 'FY11.
WHEN source_column = '2012' and THEN 'FY12.
END -
Hi Experts,
I have a date column in the database with date, type of DATA. I want to replace a single date January 1, 1900 "to a space.
When the case TABLE. COLUMN = January 1, 1900 'and then' ' on the other TABLE. End of column.
When I wrote this statement... I get an error like
Union of the incompatible types
Please let me know where I'm missing.
Thank you
VTry this:
CASE when TO_CHAR(TABLE.COLUMN,'dd-mon-yyyy')='01-JAN-1900' then ' ' else TABLE .Column End
-
doubt in the case when statement
Hi the gems...
I have a case when statement in a select clause... ago total three conditions in the case when statemnt.
now my question is if all theconditions gets mapped, what happens?
is only the first condition is executed and rest two is ignored or the third condition will overwrite the previous two?
Please help... Thanks in advance...You can see it with:
select case when 1=1 then 1 when 2=2 then 2 when 3=3 then 3 end test from dual; TEST --------- 1
You get only the first result!
Published by: hm on 18.11.2011 04:11
-
NOT IN clause in State of the CASE statement does not
Dear friends,
I want to use on the condition in the WHERE clause of my SELECT statement.
WHERE <>...
<>...
AND eihf.exr_aip_asset_sid NOT IN
(CASE when safa.fund_relation = 'C' and safa.fund_account_code! = vFundAccount)
SO (37874,37909,43424,55040,59513,59598,58570,76148,75885,75927)
ON THE OTHER
(0)
END
)
But it gives me an error like "missing of good parenthis."
Help, please.
Kind regards
JonathanYou can not write a list of values within the case statement.
try something like this,
WHERE <-------------> AND CASE WHEN safa.fund_relation = 'C' AND safa.fund_account_code != vFundAccount THEN eihf.exr_aip_asset_sid ELSE 1 END NOT IN (37874, 37909, 43424, 55040, 59513, 59598, 58570, 76148, 75885, 75927) AND CASE WHEN safa.fund_relation = 'C' AND safa.fund_account_code != vFundAccount THEN 1 ELSE eihf.exr_aip_asset_sid END != 0;
Maybe you are looking for
-
Pop - up - causing to reboot every 5 minutes
Visited a Web site (scanned post 'infection' total virus and found nothing) this am and immediately after, determined that I had shot down some type of adware. Adware is a pop-up that says: "this computer will restart in 5 minutes. Please save all
-
When you open windows in Fire Fox, I receive a message from the Application of Java Script. "Exc in ev handl: error: oSAPlg.oRoot.log is not a function".I have Windows 7
-
BlackBerry Smartphones need help with sim card switch
I'm changing the SIM card in my bb... it s the same company & only is done I need to move to a broken iphone 3gs. When I put it in the bb, I can make phone calls & have access to the web but my bbm works at all! I tried to reset, upgrade the operatin
-
No sound on T61p after going to Windows 7
I installed Windows 7 RC build and lost all sound. I looked around, but it doesn't seem like there is still a driver out. Is this correct? I tried to install the latest driver (6.10.2.5510) in Vista compatibility mode, but that did not help either. W
-
nom_tablespace in user_ind_partitions after the removal of secondary
HelloUsing oracle 11.2.0.3 and we have moved the data and rebuilds the local bitmap indexes in a composite range-hash partitioned table.Name of the tablespace in user_ind_subpartitions is as expected after the moveSelect s.index_name, s.partition_nam