Syntax of the IF statement
GreetingsI have the following code which causes problems in a larger application. This fails on its own, so there's something wrong.
Can someone point me to a solution. The table and column exist. BI_ACCT_CODE is a 12 BYTES VARCHAR2
SELECT
IF A.BI_ACCT_CODE IS NOT NULL
THEN "NOT NULL".
ELSE 'NULL '.
END IF
OF GEN_ACCTTABLE HAS
The error I get is
ORA-00923: THE KEYWORD not found where expected
00923 00000 - "FROM keyword not found where expected"
* Cause:
* Action:
Error on line: column 435: 16
Line 435 is 'IF A.BI_ACCT_CODE IS NOT NULL"
Thank you
896596 wrote:
GreetingsI have the following code which causes problems in a larger application. This fails on its own, so there's something wrong.
Can someone point me to a solution. The table and column exist. BI_ACCT_CODE is a 12 BYTES VARCHAR2
SELECT
IF A.BI_ACCT_CODE IS NOT NULL
THEN "NOT NULL".
ELSE 'NULL '.
END IFOF GEN_ACCTTABLE HAS
The error I get is
ORA-00923: THE KEYWORD not found where expected
00923 00000 - "FROM keyword not found where expected"
* Cause:
* Action:
Error on line: column 435: 16Line 435 is 'IF A.BI_ACCT_CODE IS NOT NULL"
Thank you
Hello
Try
SELECT CASE WHEN A.BI_ACCT_CODE IS NOT NULL THEN "NOT NULL' ELSE 'NULL' END OF GEN_ACCTTABLE HAS
See you soon
Tags: Database
Similar Questions
-
Formula member syntax of the IF statement
Hi guys
Can someone help me with the syntax of the IF statement on a member form.
The custom of 'Total cost', I want to apply a formula that calls value loaded to a series of other measures (m1, m2, m3, etc.) such that if the number of bags is = 1, then a charged value of M1 is called and if the number of bags is 2, a value loaded to m2 is called.
Thank youI think there may be a better way to do what you are trying to achieve, but here's the syntax of the IF statement
IF ("number of bags" == 1)
'm1 ';
ELSEIF ("number of bags" == 2)
'm2 ';
ELSEIF ("number of bags" is 3)
"m3";
...
ENDIF; -
Not finding the correct syntax for the select statement
Hello
The following statement works very well and gives the expected results:
As an academic exercise, I wanted to rewrite the above statement without using the WITH clause, I tried this (amongst dozens of other tests - I hit a mental block and cannot understand):prompt prompt Using WITH t prompt with t as ( select a.proj_id, a.proj_start, a.proj_end, case when ( select min(a.proj_start) from v b where (a.proj_start = b.proj_end) and (a.proj_id != b.proj_id) ) is not null then 0 else 1 end as flag from v a order by a.proj_start ) select proj_id, proj_start, proj_end, flag, -- -- the following select statement is what I am having a hard time -- "duplicating" without using the WITH clause -- ( select sum(t2.flag) from t t2 where t2.proj_end <= t.proj_end ) s from t;
Thanks for the help, much appreciated.prompt prompt without with prompt select c.proj_id, c.proj_start, c.proj_end, c.flag, -- -- This is what I've tried as the equivalent statement but, it is -- syntactically incorrect. What's the correct syntax for what this -- statement is intended ? -- ( select sum(t2.flag) from c t2 where t2.proj_end <= c.proj_end ) as proj_grp from ( select a.proj_id, a.proj_start, a.proj_end, case when ( select min(a.proj_start) from v b where (a.proj_start = b.proj_end) and (a.proj_id != b.proj_id) ) is not null then 0 else 1 end as flag from v a order by a.proj_start ) c;
John.
PS: The DDL for table v used by the above statements is:
drop table v; create table v ( proj_id number, proj_start date, proj_end date ); insert into v values ( 1, to_date('01-JAN-2005', 'dd-mon-yyyy'), to_date('02-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 2, to_date('02-JAN-2005', 'dd-mon-yyyy'), to_date('03-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 3, to_date('03-JAN-2005', 'dd-mon-yyyy'), to_date('04-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 4, to_date('04-JAN-2005', 'dd-mon-yyyy'), to_date('05-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 5, to_date('06-JAN-2005', 'dd-mon-yyyy'), to_date('07-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 6, to_date('16-JAN-2005', 'dd-mon-yyyy'), to_date('17-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 7, to_date('17-JAN-2005', 'dd-mon-yyyy'), to_date('18-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 8, to_date('18-JAN-2005', 'dd-mon-yyyy'), to_date('19-JAN-2005', 'dd-mon-yyyy')); insert into v values ( 9, to_date('19-JAN-2005', 'dd-mon-yyyy'), to_date('20-JAN-2005', 'dd-mon-yyyy')); insert into v values (10, to_date('21-JAN-2005', 'dd-mon-yyyy'), to_date('22-JAN-2005', 'dd-mon-yyyy')); insert into v values (11, to_date('26-JAN-2005', 'dd-mon-yyyy'), to_date('27-JAN-2005', 'dd-mon-yyyy')); insert into v values (12, to_date('27-JAN-2005', 'dd-mon-yyyy'), to_date('28-JAN-2005', 'dd-mon-yyyy')); insert into v values (13, to_date('28-JAN-2005', 'dd-mon-yyyy'), to_date('29-JAN-2005', 'dd-mon-yyyy')); insert into v values (14, to_date('29-JAN-2005', 'dd-mon-yyyy'), to_date('30-JAN-2005', 'dd-mon-yyyy'));
select c.proj_id, c.proj_start, c.proj_end, c.flag, -- -- This is what I've tried as the equivalent statement but, it is -- syntactically incorrect. What's the correct syntax for what this -- statement is intended ? -- ( select sum(t2.flag) from (select a.proj_id, a.proj_start, a.proj_end, case when ( select min(a.proj_start) from v b where (a.proj_start = b.proj_end) and (a.proj_id != b.proj_id) ) is not null then 0 else 1 end as flag from v a order by a.proj_start ) t2 where t2.proj_end <= c.proj_end ) as proj_grp from ( select a.proj_id, a.proj_start, a.proj_end, case when ( select min(a.proj_start) from v b where (a.proj_start = b.proj_end) and (a.proj_id != b.proj_id) ) is not null then 0 else 1 end as flag from v a order by a.proj_start ) c;
-
Using syntax for the 'If' statement in the query?
Hi, I work at the end before the PS 9.2 via the request handler and need help
What I want to do, it's a field of expression to create
another field of expression that I can use to group on. Maybe the query like
expressions based on expressions...? Maybe because I'm on an Oracle database, I need to use Decode? If so, how can I use decode?Details:
The field I created Gets the length of the employee in
service and it works very wellMONTHS_BETWEEN (SYSDATE, A.SERVICE_DT) / 12
It works as a character or a numeric field.
This is the problem... The next field, I would like that the query is one that goes like this...
IF ((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12))
< = 4.99, "minus 5"ELSE IF ((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12)) > = 5 AND
((MONTHS_BETWEEN(SYSYDATE,A.SERVICE_DT)/12)) < = 9.99, "5 to 9".ELSE IF ((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12)) > = 10 AND
((MONTHS_BETWEEN(SYSYDATE,A.SERVICE_DT)/12)) < = 14.99, '10 to 14', "15 and"
More»I get an error message that "a SQL error has occurred. For more details, please see your system log. Error in running because the SQL query is 972. Message = ORA-00972 identifier is too long (50 380)
Can you tell me what expression should I use? And please keep in mind that I do not have access to the SQL Developer, so I have to use the query. Thank you!... Mary
I would recommend using BOX WHEN if you're on an Oracle database. Something like:
CASE WHEN ((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12)) <=4.99 then="" 'less="" than="" 5'="" when="" ((months_between(sysdate,a.service_dt)/12))="">= 5 AND
((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12)) <=9.99 then="" '5="" to="" 9'="" when="" ((months_between(sysdate,a.service_dt)/12))="">= 10 AND ((MONTHS_BETWEEN(SYSDATE,A.SERVICE_DT)/12))<=14.99 then="" '10="" to="" 14'="" else="" '15="" and="" over'="">=14.99>
You can find more on the syntax of the CASE on the Oracle's Web site:
http://docs.Oracle.com/CD/B19306_01/AppDev.102/b14261/case_statement.htm
=9.99>=4.99> -
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.
-
How to ask the user to type in the select statement
Hello
Can anyone tell me the syntax of the select statement where I can ask the user to enter the value.
for example, I try to use belowthing, but it displays error
Select * from emp where empname =: empname
SP2-0552: Bind "empname' undeclared variable.
2. is there a dictionary of data table to see all pl/sql procedures and corresponding code?
Thank you
SriTry:
select * from emp where empname='&empname';
L.
-
Helps with the syntax of dynamic sql statements
Hi all
How can I pass the value of the result of my dynamic select statement to a Ref Cursor?
I try the following statement but does not work, I get this error:
ORA-00932: inconsistent data types: expected - was - ORA-06512: at
Any ideas?Procedure getItems(v_first In number, v_second In Number, arg_Cursor IN OUT CUSTOM_REF_CURSOR) is sqlString varchar(3000); Begin sqlString := 'select* from bla where o.arg_1 = :1 and arg_2 = :2'; execute immediate sqlString into arg_Cursor using v_first, v_second; End getItems;
Thank you
JohnnyPROCEDURE getitems (v_first IN NUMBER, v_second IN NUMBER, arg_cursor IN OUT sys_refcursor) IS sqlstring VARCHAR (3000); BEGIN sqlstring := 'select* from bla where o.arg_1 = :1 and arg_2 = :2'; OPEN arg_cursor FOR sqlstring USING v_first, v_second; END getitems;
-
Error in the Merge statement using dblink
Hello
I am facing the following error when you use the merge statement using the dblink.
ORA-02069: global_names must be set to true for this operation parameter.
I can use the same dblink in my select insert and update statements but when I try to use merge then he invites the error said, is also not any syntax error as same statement can be used on the same tables of database instead of dblink.
Please suggest any help will be much appreciated.
Thanks in advance
Hi Aqeel
If insert and update statements work well through links db, then it should not be a problem with the merge statement. But if you are faced with the question, so please check the entire sql statement with tnsnames on both sides. Please share the tnsnames for the two dbs with dblink ddl.
Concerning
Jihane Narain Sylca
-
The customer States AR indicate Page numbers Reset based on the number of customer
Hello
In the customer statements AR report, if I ran the report for several clients, page number must be reset for each customer...
Group on the way as below,
<? for-each-group: G_STATEMENT; STATEMENT_DATE? > <? for-each - group:current-group(); SEND_TO_ADDRESS_ID? >
Hi Valerie,.
I got the answer by using the @section command.
Here's the complete syntax in my case.
Xml tag - field form
If the found data.
Group G_SETUP-
Group G_STATEMENT-
Its work for me.
Let me know if you need more information.
Kind regards
National Stadium
-
subquery in the IF statement in the trigger, without using foreign keys
Hello
I'm studying ways to write a subquery in an IF statement, which is placed inside a trigger.
I want to write sth like IF (: new.jazz not in (select goldies from T which...)) etc. I don't know if the fact that the IF is in a trigger adds a few additional restrictions. (Does?)
So far, I've found the solution described here: comparison of subquery in the If statement , which I think is a little cheesy, I could have the "cooleststarinthegalaxy" instead of 1 and seems you need to do extra light, but always very lifting.
I also read on the possibility to use MERGE, what I'm currently doing research.
Is there another way?
Thank you
Published by: BluShadow on November 14, 2012 13:37
fixed link
Edits by me: the question is how (if possible) to do this without a foreign key.
Published by: questioningq12 on November 14, 2012 06:11
Published by: questioningq12 on November 14, 2012 06:13questioningq12 wrote:
Still does not address the problem of writing, a subquery in a case within a trigger, which is what was the original question.OK, simple answer... you can not write a subquery in a State of the IF statement, it is not part of the syntax of PL/SQL.
-
question about the call in the trigger statement
I faced a question on the written examination.
A CALL statement in a trigger to call
package (a)
procedure b)
c function)
(d) another trigger
Can someone give me answer with reason?
I used the CALL statement inside the trigger, but not allowing to use. Could be sooner in the oracle CALL statement, we can use... This isn't a guess, so I ask in the forum...
Please guide me...
Rgds,
PCYou can use the CALL in a trigger without using EXECUTE IMMEDIATE
SQL> create table t1 ( 2 col1 number 3 ); Table created. SQL> create procedure t1_proc 2 as 3 begin 4 dbms_output.put_line( 'In T1_PROC' ); 5 end; 6 / Procedure created. SQL> ed Wrote file afiedt.buf 1 create trigger trg_t1 2 before insert on t1 3 for each row 4* call t1_proc 5 / Trigger created. SQL> set serveroutput on; SQL> insert into t1 values( 1 ); In T1_PROC 1 row created.
I see no reason that you would in fact intentionally structure your code this way in this day and age because it would be likely to lead to confusion for those who had to support it in the future. But it's a valid syntax that probably made sense back in Oracle 5.
Justin
-
Decode function in the Update statement
Hi all
I'm writing a query where I can update a pastdue_fees column in a table of book_trans based on a difference between the return_dte and due_dte columns.
I use Oracle SQL. That's what I have so far for my decoding function:
SQL > SELECT
2 DECODE (SIGN ((return_dte-due_dte) * 2),)
3 '-1 ', ' 0',
4 '1', '12', 'Null')
5 FROM book_trans;
DECO
----
Null value
12
Null value
0
If the logic is that, if the sign is - 1, the value in the return_dte column must be 0; If it is + 1, then it has 12 and everything else is Null.
So now, I have to conclude my function of decoding of the update statement to update the columns. However, I get the error messages.
The logic should be:
UPDATE book_trans SET PastDue_fees = decode (expression)
I gave him a few different tests with the following results:
SQL > UPDATE book_trans
2 SET pastdue_fees = SELECT
3 DECODE (SIGN ((return_dte-due_dte) * 2),)
4 '-1 ', ' 0',
5 '1', '12', 'Null')
6 FROM book_trans.
SET pastdue_fees = SELECT
*
ERROR on line 2:
ORA-00936: lack of expression
SQL > UPDATE book_trans
2 SET pastdue_fees =
3 DECODE (SIGN ((return_dte-due_dte) * 2),)
4 '-1 ', ' 0',
5 '1', '12', 'Null')
6 FROM book_trans.
OF book_trans
*
ERROR on line 6:
ORA-00933: SQL not correctly completed command.
Any help or advice would be greatly appreciated I got SQL for about six weeks and not very competent!
Thank you!882300 wrote:
Hi allI'm writing a query where I can update a pastdue_fees column in a table of book_trans based on a difference between the return_dte and due_dte columns.
I use Oracle SQL. That's what I have so far for my decoding function:
SQL > SELECT
2 DECODE (SIGN ((return_dte-due_dte) * 2),)
3 '-1 ', ' 0',
4 '1', '12', 'Null')
5 FROM book_trans;DECO
----
Null value
12
Null value
0If the logic is that, if the sign is - 1, the value in the return_dte column must be 0; If it is + 1, then it has 12 and everything else is Null.
So now, I have to conclude my function of decoding of the update statement to update the columns. However, I get the error messages.
The logic should be:
UPDATE book_trans SET PastDue_fees = decode (expression)I gave him a few different tests with the following results:
SQL > UPDATE book_trans
2 SET pastdue_fees = SELECT
3 DECODE (SIGN ((return_dte-due_dte) * 2),)
4 '-1 ', ' 0',
5 '1', '12', 'Null')
6 FROM book_trans.
SET pastdue_fees = SELECT
*
ERROR on line 2:
ORA-00936: lack of expressionSQL > UPDATE book_trans
2 SET pastdue_fees =
3 DECODE (SIGN ((return_dte-due_dte) * 2),)
4 '-1 ', ' 0',
5 '1', '12', 'Null')
6 FROM book_trans.
OF book_trans
*
ERROR on line 6:
ORA-00933: SQL not correctly completed command.Any help or advice would be greatly appreciated I got SQL for about six weeks and not very competent!
Thank you!
If you really really really want to update the entire table, the syntax would be...
UPDATE book_trans SET pastdue_fees = DECODE(SIGN((return_dte - due_dte)*2), -1, 0, 1, 12, Null);
I took out all the single quotes. If you actually have a string column and store all numbers in there so it must be reported as a NUMBER column and not a column of type character (varchar2).
ALWAYS use the appropriate data type, it will save you a ton of headaches in the future.
Also, since you are new to the forum, please read the FAQ to learn etiquette and what not.
http://wikis.Sun.com/display/Forums/Forums+FAQ
-
Excel and the CASE statement.
Hello Experts,
I use a CASE statement on the column of CHAR type as follows:
CASE WHEN Sales.Ret = 'Y' THEN 'Return' END of OTHER 'new '.
It gives an error: Odbc driver returned an error (SQLExecDirectW).
Whereas, when I use another CASE statement with column Numrical it works perfectly.
CASE WHEN Sales.Amount < END If NOT 100 40 THEN 40
Am I missing an Excel data source definition related to the CHAR data type?
My source is MS Excel 2003 and OBIEE 10.1.3.4.1
Thank you for any comments, help.
~ Ash
PS: the details of the error are the following:*.
Error codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error occurred. [nQSError: 16001] ODBC error state: 37000 code:-3100 message: error [Microsoft] [ODBC Excel Driver] syntax (missing operator) in query expression ' case when T46. [Retirement] = "Y" then "known" other "new" end "... [nQSError: 16014] Prepare the SQL statement failed. (HY000)
Publ. SQL: SELECT Sales.Tran_date, saw_0, CASE WHEN Sales.Ret = 'Y' THEN 'Return' ELSE 'New' END saw_1, network. "" Network name "saw_2, Sales.Amount saw_3 FROM P4UD ORDER BY saw_0, saw_1, saw_2Sorry, the button is 'Ask DBMS' (biee 10g)
-
States, how to access the components not included in the current state?
I have two State put in place for my application. I have a creationComplete triggering my init function and a lot of listeners are then added here and there throughout the app. The only problem that I am running is that an element is not included in the default state, but I'm trying to add a listener to this component on my init function, and it gives me a runtime error stating that the component (which is not included in the default state) is a null object.
How can I force this component is instantiated when the application is created?
My best guess was to put a creationPolicy on 'something' to instantiate components "all".
Thank you!
See the section "Creation of Custom and Destruction policies ' of this specification:
http://opensource.Adobe.com/wiki/display/FlexSDK/enhanced+States+syntax
-
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)?
Maybe you are looking for
-
How can I get the sound card to play on the speakers of the car?
How can I get the sound card to play on the speakers of the car?
-
Elite 8300, re - install windows 7 problem on new drive
Hi all I juist bought a number of the PC Elite 8300. I want to install an SSD of replacement instead of the player that comes with the unit. I can happily re - install windows, but it won't catch the key of windows since the bios and not asking the l
-
Pavilion SleeKbook: Smart disk error
When I start my laptop it shows the message "Smart hard disk error". Then I check the hard drive, but it stopped with this result: INTELLIGENT control: FAILURE FAILURE ID: 9CWGGF-69V81U-MFPX0K - 60A 303PRODUCT ID: C5J13PA #UUF HARD DRIVE 1
-
Reloaded my xp on an old machine, when trying to update the service packs were saying mistakes along the way. Find a service pack. installed, appears on the screen of the computer, but when try to said updates do install SP2 or I receive errors when
-
Where the first 15 items?
When you look at the latest versions of Adobe Premiere Elements, they were all at the end of September each year for the previous years... Where the first 15 items?