DECODE vs. CASE problem
Hi, sorry to post what may end up being a very dumb question here. I'm trying to take a huge, complicated query that runs a ton of DECODE statements and turn it into something readible. However, I'm running in to a strange issue.
To my mind, when I run the following query, columns A, B, and C should all return exactly the same values:
SELECT userid,
DECODE(MAX(last_committed_dt),NULL,MAX(launch_dt)+1,MAX(last_committed_dt))-(MIN(launch_dt)) A,
NVL(MAX(last_committed_dt), MAX(launch_dt)+1) - MIN(launch_dt) B,
CASE WHEN MAX(last_committed_dt) IS NOT NULL THEN MAX(last_committed_dt) ELSE MAX(launch_dt)+1 END - MIN(launch_dt) C
FROM mytable ttJ
left join mytable2 sa ON (ttJ.user_id = sa.user_id)
left join mytable3 lh ON (lh.attempt_id = sa.attempt_id)
GROUP BY user_id
However, the results of this query show that B and C equal, but neither ties to A:
USERID A B C
1134 +00 01:50:50.471849 +00 01:50:50.877240 +00 01:50:50.877240
6716 +37 00:36:02.605919 +37 00:36:02.994966 +37 00:36:02.994966
1118 +00 00:22:48.913212 +00 00:22:49.419523 +00 00:22:49.419523
3111 +53 23:43:03.858221 +53 23:43:04.122084 +53 23:43:04.122084
Could someone please help me understand the difference?
Thanks!
Scott
To my mind, when I run the following query, columns A, B, and C should all return exactly the same values:Not entirely true:
It might depend if some datatype conversions are going on. Following example shows that, though logically equivalent, different (datatype-) results are presented:
SQL> with t as
(select to_timestamp('31.01.2007','dd.mm.yyyy') ts from dual)
select dump(decode(ts,null,ts-1,ts)) t1,
dump(nvl(ts,ts-1)) t2,
dump(case when ts is null then ts-1 else ts end) t3
from t
T1 T2 T3
Typ=13 Len=7: 215,7,1,31,0,0,0 Typ=187 Len=20: 215,7,1,31,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0 Typ=180 Len=7: 120,107,1,31,1,1,1 In particular notice that decode returns a DATE in contrast to the others where some timestamp variants are returned
Similar Messages
-
Hi all,
select
id
,one
,two
From
(select id
, one
, two
, Max(decode(TYPE, "ER", 3*4, 4*7)
from
(select id
, sum(one) as one
, sum(two) as two
from t1
group by id)
group by id, one, two
) temp inner join t2....
The above query is just a sample structure to tell the problem that i am facing. It works fine, but i need to convert it to ANSI Standard.
Hence I need to convert the DECODE to CASE statement. but if i convert to CASE, i need to use any of the GROUP BY FUNCTIONS, but if i use the MAX of any group by functions, the result would be wrong...how to overcome it
ThanksHi,
Yes I did a silly mistake, the code I gave was for only the decode but when I converted it to case statement, there was a silly mistake, which i corrected.
Now i corrected it to
Select
COL1
, Col2
, MAX(CASE WHEN Upper(TYPE) = 'YR' THEN Round(3.43*3, 2) END) AS CALC1
, Max(CASE WHEN Upper(TYPE) = 'ZP' THEN Round(3.12*12, 2) END) AS CALC2
From
Group by....
but now when i add a sum of the calc1 & calc2, I am not getting any results the column is blank. Is there anything that i missed
Select
COL1
, Col2
, MAX(CASE WHEN Upper(TYPE) = 'YR' THEN Round(3.43*3, 2) END) AS CALC1
, Max(CASE WHEN Upper(TYPE) = 'ZP' THEN Round(3.12*12, 2) END) AS CALC2
, (MAX(CASE WHEN Upper(TYPE) = 'YR' THEN Round(3.43*3, 2) END
+ Max(CASE WHEN Upper(TYPE) = 'ZP' THEN Round(3.12*12, 2) END)) as SUM3
From
Group by....
Thanks -
I'm a beginner with Oracle SQL and I have a select statement with the following code:
max(decode(EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD, '1000', EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE, '2000', EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE, '4000', EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE))
I've been asked to create several more columns in a similar manner. My concern is that since this relies on 'decode' which is less efficient than 'case', that adding more columns using this approach will bog down an already not efficient query. Bottom line my problem is that I don't really understand this 'decode' since all the explanations of 'decode' I've found stop at four parameters.
Could someone please show me how the expression above looks in If-then-else terms as well as comment on how to convert this 'decode' to 'case'? Thanks in advance!1) The if-then-else stmt
-- Longest way
if EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '1000' then
return value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE;
elsif EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '2000' then
return value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE;
elsif EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '4000' then
return value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE;
else return null;
end if;
-- shorter way
if EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '1000' or
EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '2000' or
EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD = '4000' then
return value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE;
else return null;
end if;
-- shortest if-then-else code
if EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD in ('1000', '2000', '4000') then
return value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE;
else return null;
end if;
2) The MAX() function
The MAX function will return the greatest value of EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE in step 1 above.
2) Using CASE
select
max(case when (EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_CD in('1000','2000','4000'))
then EDW.V_RECRUIT_TEST_RESULT_HIST.TEST_RESULT_TEST_SCORE end)
into ...your_item_or_local_variable
from EDW.V_RECRUIT_TEST_RESULT_HIST;
Try the code above, good luck
v/r
Vien Tran -
Hi
I need small clarification about difference between decode and case
Thanks who visit my threadAnd for those people who can't be ar$ed to follow links...
Decode allows for conditional output where the conditions are straightforward matches between values.
Case allows for regular conditions to be used such as greater than, less than etc.
Some of the things done by case can be achieved through decode as well but in a more convoluted manner than simply using case.
;) -
What will be good for proformance wise:
Decode or Case in a sql statement.?????See the following link for Tom Kyte's opinion (point #4 in his first answer):
http://asktom.oracle.com/pls/ask/f?p=4950:8:16717708356827415201::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:1243867216406 -
Which is the best decode or case
Hi,
When you check performance wise which is the best one decode or case?
Thanks,> You mean CPU processor speed or oracle buffer(SGA).
Neither. CPU architecture. RISC vs CISC vs ..
On a PA-RISC1 CPU a DECODE is just a tad faster than a CASE. On an AMD64 CPU, the reverse is true.
> When I increase memory, The case and decode performance will increase?
No. A CASE and a DECODE does not need memory to work faster. It is a set of machine code instructions that needs to compare values to determine a result. It depends on just how fast the CPU can execute this set of machine code instructions.
A faster CPU will make a very significant difference. An AMD64 Opteron CPU is a couple of times faster than a PA-RISC1 CPU.
I had this exact same conversation back in 2006 on this forum - and posted [url
http://forums.oracle.com/forums/thread.jspa?messageID=1346165�]this benchmark to show that the decision of using CASE or DECODE is not a decision that should be based on raw performance. -
I have emp_allocation table. It has data as below
EMPID YEAR MONTH
X 2006 JAN
X 2006 MAR
Y 2006 JAN
Y 2006 FEB
Y 2006 MAR
I want SQL Query(Without Decode or Case) which will give output as below
EMPID YEAR JAN FEB MAR APR JUN JUL
X 2006 Y N Y
Y 2006 Y Y YWhy you'd want to do it this way I do not know, but if you insist...
SQL> ed
Wrote file afiedt.buf
1 WITH t AS (select 'X' AS EMPID, 2006 AS YEAR, 'JAN' AS MONTH FROM DUAL UNION ALL
2 select 'X', 2006, 'MAR' FROM DUAL UNION ALL
3 select 'Y', 2006, 'JAN' FROM DUAL UNION ALL
4 select 'Y', 2006, 'FEB' FROM DUAL UNION ALL
5 select 'Y', 2006, 'MAR' FROM DUAL)
6 -- END OF TEST DATA
7 SELECT EMPID, YEAR, NVL(MAX(JAN),'N') AS JAN, NVL(MAX(FEB),'N') AS FEB, NVL(MAX(MAR),'N') AS MAR, NVL(MAX(APR),'N') AS APR
8 FROM
9 (
10 SELECT EMPID, YEAR, 'Y' AS JAN, NULL AS FEB, NULL AS MAR, NULL AS APR FROM t WHERE MONTH = 'JAN' UNION ALL
11 SELECT EMPID, YEAR, NULL AS JAN, 'Y' AS FEB, NULL AS MAR, NULL AS APR FROM t WHERE MONTH = 'FEB' UNION ALL
12 SELECT EMPID, YEAR, NULL AS JAN, NULL AS FEB, 'Y' AS MAR, NULL AS APR FROM t WHERE MONTH = 'MAR' UNION ALL
13 SELECT EMPID, YEAR, NULL AS JAN, NULL AS FEB, NULL AS MAR, 'Y' AS APR FROM t WHERE MONTH = 'APR'
14 )
15 GROUP BY EMPID, YEAR
16* ORDER BY 1,2
SQL> /
E YEAR J F M A
X 2006 Y N Y N
Y 2006 Y Y Y N
SQL> -
Hi,
What is the difference between decode and case?
What are the cases in which we can use Decode and case
Thanxyou can not put Search CASE statements by using DECODE
Eg:
SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary ELSE 2000 END) "Average Salary" FROM employees e;Can't we?
select avg(decode(sign(e.salary - 2000), 1, e.salary, 2000)) "Average Salary" from employees e; -
What is better and fast to use between decode and case
Hi friends,
i wanted to know what is better to use decode or case in sql,which gives faster result.
thks
sonal....Here's a very simple timing comparison. This table (actually it's a partition) has a little over 1 million rows.
As you can see, the timing difference is trivial. (I ran an earlier query to fetch the blocks from disk).
SQL> select sum(decode(balloon_flag
2 ,'Y',1
3 ,0
4 )
5 ) bal_count
6 from prod.loan_master
7 where report_date = to_date('31-DEC-2005');
BAL_COUNT
9036
Elapsed: 00:00:07.65
SQL> select sum(case balloon_flag
2 when 'Y' then 1
3 else 0
4 end
5 ) bal_count
6 from prod.loan_master
7 where report_date = to_date('31-DEC-2005');
BAL_COUNT
9036
Elapsed: 00:00:07.68
SQL> select sum(case
2 when balloon_flag = 'Y' then 1
3 else 0
4 end
5 ) bal_count
6 from prod.loan_master
7 where report_date = to_date('31-DEC-2005');
BAL_COUNT
9036
Elapsed: 00:00:07.46 -
How does decode and case works?
Hi,
I want to know how decode and case works? How they process the arguements. Please explain me with some examples.
Thanks,
Sarav
Edited by: 943941 on Jul 3, 2012 1:42 AMwelcome
check this link
https://forums.oracle.com/forums/ann.jspa?annID=1535
you will find everything you need
DECODE compares expr to each search value one by one. If expr is equal to a search, then Oracle Database returns the corresponding result. If no match is found, then Oracle returns default. If default is omitted, then Oracle returns null.
This example decodes the value warehouse_id. If warehouse_id is 1, then the function returns 'Southlake'; if warehouse_id is 2, then it returns 'San Francisco'; and so forth. If warehouse_id is not 1, 2, 3, or 4, then the function returns 'Non domestic'.
SELECT product_id,
DECODE (warehouse_id, 1, 'Southlake',
2, 'San Francisco',
3, 'New Jersey',
4, 'Seattle',
'Non domestic')
"Location of inventory" FROM inventories
WHERE product_id < 1775;Edited by: user 007 on Jul 3, 2012 2:40 PM -
DECODE OR CASE - Which is better and why
Oracle version: 11.2
Problem: We have a huge table with 10M records, which needs to be processed daily.
While loading data in table we have to handle condition if flag is =1 then '111' else '000'
To implement this which one is efficient solution? .. using CASE or DECODE and why?
Example:
SQL> select flag,case when flag='Y' then '111' else '000' end from (select 'Y' as flag from dual union all select 'N' from dual);
F CAS
Y 111
N 000
SQL> select flag,decode(flag,'Y','111','000') from (select 'Y' as flag from dual union all select 'N' from dual);
F DEC
Y 111
N 000Hi,
For this job, they're equally efficient.
For any job, where DECODE doesn't require a lot more code than CASE, they will be equally efficient.
I recommend (almost) always using CASE. It's easier to understand and debug, and, if written correctly, will never be slower than DECODE.
The only situation where I use DECODE is for very simple tasks (like the one you posted) where this is used inside a very complicated expression, and the slightly less coding needed for DECODE makes the larger statement easier to read. -
Hello friends
I have a complex view with about 40000 records...Now I have a query
involving a 'case' clause in it..
And if i run this query it runs for 15 seconds...If i replace this 'case'
with decode it executes in a second.
SELECT (CASE WHEN SUM(Column1) IS NULL THEN SUM(Column2) ELSE NULL END) AS
name1 FROM VIEW1, Table1, Table 2 WHERE
[ 6 conditions in the where clause] GROUP BY 12 columns(column1,column2,etc)
ORDER BY 2 columns.
Is the problem really with case or with groupby, orderby, Sum function
within case, etc,See the following link for Tom Kyte's opinion (point #4 in his first answer):
http://asktom.oracle.com/pls/ask/f?p=4950:8:16717708356827415201::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:1243867216406 -
DECODE Vs CASE Performance Issue
Hi,
The comparison is on basis of performance. There are billions of records to be processed and millions to be updated.
Please go through the folowing queried to have general idea because the actual query is 2 page long.
DECODE(EXP,1,VAL1,VAL2)
Vs
CASE WHEN EXP=1
THEN VAL1
ELSE
VAL2
END
Update table1
set column=( select query)
where (item) IN (select item from table2 )
Please give inputs in term of performance.
Regards
Nitin BajajHu... I can understand your point also but it is not
diff to find the solution in the thread, you don't
need to read the whole thread.Even if you see that there are no entries in the duplicate postings, whenever you are using the search function, those will also be shown.
but put yourself in his position, he might be in need
of desparate help right...
Think in two ways...And posting the same problem again and again solves this?
cd -
I have several codes that mean a specific thing that I need to measure. For instance HS002 and HS004 = MedNec, KS004, KS005, KS006, KS007,KS008= AdminDen. These codes are housed in one field the Denied Reason Field and It might be better to do a Case Statement to just change the code to fit in the one group and then I can count each group. Any help is appreciated. Thanks!!
Im doing a report in which I need to get a count ot How Many Denied, How Many Approved with Denial Reasons and type. Can I get some direction on what would be the best way to do this. Here is my code so far:
SELECT
A1.AUTH_NUMBER,
A1.AUTH_TYPE,
A1..PLACE_OF_SERVICE,
A1.OVERALL_STATUS,
A1.CLOSED_REASON,
A1.DENIED_REASON,
DECODE (A1.DENIED_REASON,
'HS002', 'MED NECESS',
'HS004', 'MED NECESS')AS MEDNEC,
A1.admit_primary_date,
AP.decision_date,
AP.ADVISOR_DECISION,
PM.LAST_NAME,
PM.PROVIDER_ID,
A1.INSERT_DATETIME,
A1.ACTIVE_PHYSICIAN_ADVISOR,
MV.LINE_OF_BUSINESS
FROM Auth_master a1
INNER JOIN Auth_phys_advisor ap
ON a1.auth_number=ap.auth_number
INNER JOIN Prov_master pm
ON ap.seq_prov_id=pm.seq_prov_id
LEFT JOIN Note_master nm
ON nm.seq_memb_id=a1.seq_memb_id
INNER JOIN Member_mv mv
ON mv.seq_memb_id=a1.seq_memb_id
Where mv.Line_of_Business <>'SFS'
AND A1.PLACE_OF_SERVICE IN ('11','21','22','24')
AND a1.insert_datetime Between To_Date ('04/01/2012', 'MM/DD/YYYY') and To_Date ('04/30/2012','MM/DD/YYYY')select mydata.mednec, count(*)
from (
SELECT A1.AUTH_NUMBER,
A1.AUTH_TYPE,
A1.PLACE_OF_SERVICE,
A1.OVERALL_STATUS,
A1.CLOSED_REASON,
A1.DENIED_REASON,
Decode (A1.DENIED_REASON, 'HS002', 'MED NECESS',
'HS004', 'MED NECESS',
'KS008', 'ADMIN DEN') AS MEDNEC,
A1.admit_primary_date,
AP.decision_date,
AP.ADVISOR_DECISION,
PM.LAST_NAME,
PM.PROVIDER_ID,
A1.INSERT_DATETIME,
A1.ACTIVE_PHYSICIAN_ADVISOR,
MV.LINE_OF_BUSINESS
FROM Auth_master a1
inner join Auth_phys_advisor ap
ON a1.auth_number = ap.auth_number
inner join Prov_master pm
ON ap.seq_prov_id = pm.seq_prov_id
left join Note_master nm
ON nm.seq_memb_id = a1.seq_memb_id
inner join Member_mv mv
ON mv.seq_memb_id = a1.seq_memb_id
WHERE mv.Line_of_Business != 'SFS'
AND A1.PLACE_OF_SERVICE IN ( '11', '21', '22', '24' )
AND a1.insert_datetime BETWEEN To_date ('04/01/2012', 'MM/DD/YYYY') AND
To_date (
'04/30/2012', 'MM/DD/YYYY')
) mydata
group by mydata.mednecEdited by: AlanWms on May 10, 2012 12:23 PM Added KS008/Admin den
Edited by: AlanWms on May 10, 2012 12:25 PM -
Decode and case statement in the update..
Its is more to it, but I want to check with you guys, the experts on this, this look busy to me, it should be a more simplify way of doing it, do you think will work
The government decide to change the ethnic codes, and we have to come with certain rules to in our report, anyway, do you think this will work? again It is more to it I declare my variables, this is just one part of the precedure.
BEGIN
UTL_FILE.fclose_all;
v_file_handle := UTL_FILE.fopen (v_out_path, v_out_file, 'a');
UTL_FILE.put_line (v_file_handle,
CHR (10) || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS')
UTL_FILE.put_line (v_file_handle, 'Entering spbpers_update');
SELECT upd_spbpers_upd_cur IS
spriden_pidm,
szscapp_birth_state,
szscapp_birth_city,
DECODE(szscapp_hisp_or_latino_ind,Y,'2',N,'1'),
DECODE(szscapp_hisp_or_latino_options,XCM,'2',CUB,'2',MEX,'2',PRI,'2',XSM,'2',ESP,'2',XOH,'2'),
DECODE(szscapp_amer_indn_alaska_opt,XAN,'1','1',XCW,'1',XCH,'1',XCK,'1',XNV,'1',XSX,'1'),
DECODE(szscapp_amer_indn_alaska_other,XON,'1') (,IND,'1',JPN,'1',KOR,'1',PAK,'1',PHL,'1',VNM,'1',XEA,'1',XIS,'1',XSA,'1'),
DECODE(szscapp_asian_options,IND,'1',JPN,'1',KOR,'1',PAK,'1',PHL,'1',VNM,'1',XEA,'1',XIS,'1',XSA,'1'), ,
DECODE(szscapp_other_east_asia,(IND,'1',JPN,'1',KOR,'1',PAK,'1',PHL,'1',VNM,'1',XEA,'1',XIS,'1',XSA,'1'),
DECODE(szscapp_other_indian_subcont,XIS,'1'),
DECODE(szscapp_other_southeast_asia,XSA,'1'),
DECODE(szscapp_blk_or_afr_amer_opt,XAA,'1',XAF,'1',XCB,'1',XOA,'1'),
DECODE(szscapp_blk_or_afr_amer_other,XOA,'1'),
DECODE(szscapp_natve_hawaian_options,GUM,'1',XHI,'1',ASM,'1',XOP,'1'),
DECODE(szscapp_hawaiian_other,XOP,'1'),
DECODE(szscapp_white_options,XEU,'1',XME,'1',XOW,'1'),
DECODE(szscapp_white_other(XOW,'1')
FROM
saturn_midd.szscapp
WHERE
spriden_id = szscapp_id
AND spriden_ntyp_code = 'CAPL'
IF upd_spbpers_upd_cur%ISOPEN
THEN
CLOSE upd_spbpers_upd_cur;
END IF;
OPEN upd_spbpers_upd_cur;
LOOP
FETCH upd_spbpers_upd_cur
INTO v_pidm,v_birth_state,v_birth_city,v_latino_ind,v_latino_options,
v_indn_alaska_opt,v_indn_alaska_other,v_asian_options,
v_other_east_asia,v_other_indian_subcont,v_other_southeast_asia,
v_blk_or_afr_amer_opt,v_blk_or_afr_amer_other,v_natve_hawaian_options,
v_hawaiian_other,v_white_options,v_white_other;
EXIT WHEN upd_spbpers_upd_cur%NOTFOUND;
IF upd_spbpers_upd_cur%FOUND
UPDATE saturn.spbpers
set SPBPERS_ETHN_CODE = CASE
WHEN v_latino_ind IS NOT NULL THEN (spbpers_ethn_code = v_latino_ind,spbpers_activity_date = sysdate)
WHEN v_latino_options IS NOT NULL THEN (spbpers_ethn_code = v_latino_options,spbpers_activity_date = sysdate)
WHEN v_indn_alaska_opt IS NOT NULL THEN (spbpers_ethn_code = v_indn_alaska_opt,spbpers_activity_date = sysdate)
WHEN v_indn_alaska_other IS NOT NULL THEN (spbpers_ethn_code = v_indn_alaska_other,spbpers_activity_date = sysdate)
WHEN v_asian_options IS NOT NULL THEN (spbpers_ethn_code = v_asian_options,spbpers_activity_date = sysdate)
WHEN v_other_east_asia IS NOT NULL THEN (spbpers_ethn_code = v_other_east_asia,spbpers_activity_date = sysdate)
WHEN v_other_indian_subcont IS NOT NULL THEN (spbpers_ethn_code = v_other_indian_subcont,spbpers_activity_date = sysdate)
WHEN v_other_southeast_asia IS NOT NULL THEN (spbpers_ethn_code = v_other_southeast_asia,spbpers_activity_date = sysdate)
WHEN v_blk_or_afr_amer_opt IS NOT NULL THEN (spbpers_ethn_code = v_blk_or_afr_amer_opt,spbpers_activity_date = sysdate)
WHEN v_blk_or_afr_amer_other IS NOT NULL THEN (spbpers_ethn_code = v_blk_or_afr_amer_other,spbpers_activity_date = sysdate)
WHEN v_natve_hawaian_options IS NOT NULL THEN (spbpers_ethn_code = v_natve_hawaian_options,spbpers_activity_date = sysdate)
WHEN v_hawaiian_other IS NOT NULL THEN (spbpers_ethn_code = v_hawaiian_other,spbpers_activity_date = sysdate)
WHEN v_white_options IS NOT NULL THEN (spbpers_ethn_code = v_white_options,spbpers_activity_date = sysdate)
WHEN v_white_other IS NOT NULL THEN (spbpers_ethn_code = v_white_other,spbpers_activity_date = sysdate)
WHEN v_birth_state IS NOT NULL THEN (spbpers_stat_code_birth = v_birth_state,spbpers_activity_date = sysdate)
WHEN v_birth_city IS NOT NULL THEN (spbpers_city_birth = v_birth_city,spbpers_activity_date = sysdate)
WHERE spbpers_pidm = v_pidm;
END
END IF;
END LOOP;Did the procedure compile ?
Doesn't look like a right Decode syntax.
DECODE (col1,'VAL1','This','VAL2','That','ElseThis')
means
--Psuedocode
IF col1 = 'VAL1' THEN 'This'
IF col1 = 'VAL2' THEN 'That'
ELSE 'ElseThis'You can use CASE statement Instead of DECODE
CASE
when szscapp_amer_indn_alaska_other
in ('XON','IND','JPN','KOR','PAK' ..... ) THEN '1'
when szscapp_hisp_or_latino_options
in ('XCM','CUB','MEX','PRI','XSM','ESP','XOH' ...) THEN '2'
END SS
Maybe you are looking for
-
I am trying to upload my PDF file from my iBooks but its only giving me the option to upload from my pictures/gallery. How do I get it so I can upload from my iBooks or move my PDF files to my gallery so I can upload it?
-
Link DMS document to Sales Order
Hello - Currenlty, our Quality Department manually opens each applicable sales order and manually attaches a required document via the "Extras/Documents" path from within VA02 menu bar. It is extremely time consuming. I want to know if it is possible
-
How to set a new email account for iCloud?
How set a new email account for iCloud?
-
Use of text types possible in C4C activity?
In CRM 7.0 (on prem) it is possible to use specific text types when submitting activity notes (appointmens, phone calls) which help to cluster the text information. I haven't seen that there is something similar in C4C. There is only one "Notes" text
-
Printing with Mac and PC in an office network
Hey all. I have a PC and my MacBook connected to the internet via a Linksys WRT54G Router. I am trying to get both laptops to print wirelessly. Can someone please help me with this? They both print perfectly when connected directly to the printer via