Use of CASE in Select
Environment: Oracle 10gR1, Application Express 3.1.2, Windows XP
I am trying to do a conditional select within an Application express SQL report. I've tried the following code and gotten the indicated errors:
1. First try
SELECT find_id, fdno FROM find
WHERE site_abbrv_cd = :P43_SITE
AND season = :P43_SEASON
AND dig_ctgy_cd (
CASE
WHEN :P43_INFIX IN ('T','P','R') THEN
= :P43_INFIX
ELSE IS NULL
END)
ORDER BY display_seq_nbr
ORA-00936: missing expression
2. Second try:
SELECT find_id, fdno FROM find
WHERE site_abbrv_cd = :P43_SITE
AND season = :P43_SEASON
AND (
CASE
WHEN :P43_INFIX IN ('T','P','R') THEN
dig_ctgy_cd = :P43_INFIX
ELSE dig_ctgy_cd IS NULL
END)
ORDER BY display_seq_nbr
ORA-00905: missing keyword
Any suggestions for re-casting the query so that the "is null" condition can be tested when the Infix code is not 'T', or 'P' or 'R'?
thanks for any help
George
Hi, George,
Remember what a CASE expression does: it takes the place of a single value in one of the SQL data types.
For example, if you can say:
AND dig_ctgy_cd = :p43_infix(where :p43_infix is a VARCHAR2, or a NUMBER, or any other SQL type) then you can say
AND dig_ctgy_cd = CASE ... ENDThe is no BOOLEAN data type in SQL, so CASE can't return a BOOLEAN value. You could have a CASE expression that returned a string, such as '= :p43_infix', but you would have to use dynamic SQL to that this compiled as a condition, rather than a string literal.
Explain what you're trying to do, and someone will help you find a way to do it.
Perhaps you want something like this:
AND dig_ctgy_cd || 'X' = CASE
WHEN :p43_infix IN ('T', 'P', 'R')
THEN :p43_infix
END || 'X'Post a little sample data (CREATE TABLE and INSERT statements), a couple of values of :p43_infix, and the results you want from the same sample data for each value of :p43_infix.
Edited by: Frank Kulash on Jul 19, 2011 4:04 PM
Similar Messages
-
Use of Case in Select statement
Hi All,
Can anyone tell me whats wrong im doing in the following select statement. I am selecting most this fields from Global Temperory Table and few from normal DB tables.
select h.Taskid,h.Flowid,fd.DESCRIPTION Flowname,h.Stepid, sd.DESCRIPTION Stepname,h.Lockby,ud.USERNAME,h.Status,case Date_initiated when (Currval.Testid = Nextval.Testid) Then Date_initiated := NULL Else Date_initiated := Date_initiated End case,case UserTime When ((Currval-1).Testid IS NULL or Currval.Testid <> (Currval-1).Testid) Then UserTime := StartTime When (Currval.Testid = (Currval-1).Testid or Currval.Testid <> Nextval.Testid or Nextval.Testid IS NULL) Then UserTime = (Currval-1).Endtime End case,case StartTime When(Currval.Stepid = Nextval.Stepid or Currval.Stepid=9999) Then StartTime := NULL Else StartTime := StartTime End case,h.EndTime,h.LockTime,h.Drawer,h.FileNo,h.DocType from GlobalTempTest h inner join USERDEFINITION ud on h.Lockby=ud.USERID inner join FLOWDEFINITION fd on h.Flowid=fd.FLOWID inner join STEPDEFINITION sd on (h.Stepid=sd.STEPID and h.Flowid=sd.FLOWID)
Hope so get some response soon.
Thanks in AdvanceYou have to rewrite your code like this:
CASE WHEN (Currval.Testid = Nextval.Testid) THEN NULL
ELSE Date_initiated
END New_Date_initiatedCurrval/Nextval as shown in your example will not work. Please explain what you mean by previous value comparison.
C. -
Case in Select Statement - Ramya
Hi All,
Could any body help me out ,how to use the CASE in select Statement
Thanks in Advancehere is an example:
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7566 JONES MANAGER 7839 02-APR-81 2975 1000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected.
SQL> select empno,
2 ename,
3 job,
4 case when job = 'PRESIDENT' then 1
5 when job = 'MANAGER' then 2
6 when job = 'SUPERVISOR' then 3
7 else 4
8 end rank
9 from emp;
EMPNO ENAME JOB RANK
7566 JONES MANAGER 2
7902 FORD ANALYST 4
7839 KING PRESIDENT 1
7698 BLAKE MANAGER 2
7782 CLARK MANAGER 2
7369 SMITH CLERK 4
7499 ALLEN SALESMAN 4
7521 WARD SALESMAN 4
7654 MARTIN SALESMAN 4
7788 SCOTT ANALYST 4
7844 TURNER SALESMAN 4
7876 ADAMS CLERK 4
7900 JAMES CLERK 4
7934 MILLER CLERK 4
14 rows selected.
SQL> -
Problem using CASE within SELECT in a standard REPORT region
I'm trying to do a CASE-oriented SELECT within a standard REPORT region and the parser is rejecting the SQL statement.
The code I'm using is the following:
SELECT
CASE
WHEN INSTR(citation, '@') > 0 THEN
SUBSTR(citation, 1, INSTR(citation, '@')-1)
|| ':'
|| SUBSTR(citation, INSTR(citation, '@')+1,
LENGTH(citation) - INSTR(citation, '@'))
ELSE citation
END
FROM citation
WHERE obj_table_cd = 'FI'
AND obj_id = :P41_FIND_ID
ORDER BY CITATION
The parser says the (case .... ) is invalid, use column alias. The query works correctly when using SQL_Developer and SQL*PLUS.
My intention is to replace an '@' with ':' within the citation text. The standard citation format should have a colon, but this causes problems with AppExpress, hence the substitution situation.
Any insights on this or on another way to achieve the purpose?
Thanks,
GeorgeGeorge,
You should give a column alias after the END of the case statement:
SELECT
CASE
WHEN INSTR(citation, '@') > 0 THEN
SUBSTR(citation, 1, INSTR(citation, '@')-1)
|| ':'
|| SUBSTR(citation, INSTR(citation, '@')+1,
LENGTH(citation) - INSTR(citation, '@'))
ELSE citation
END citation_col
FROM citation
WHERE obj_table_cd = 'FI'
AND obj_id = :P41_FIND_ID
ORDER BY CITATIONSam -
How do I use the CASE statement in the where clause?
Hello Everyone,
I have 2 queries that do what I need to do but I am trying to learn how to use the CASE statement.
I have tried to combine these 2 into one query using a case statement but don't get the results I need.
Could use some help on how to use the case syntax to get the results needed.
thanks a lot
select segment_name,
product_type,
count (distinct account_id)
FROM NL_ACCT
where
ind = 'N'
and
EM_ind = 'N'
and product_type in ('TAX','PAY')
and acct_open_dt between (cast('2006-01-17' as date)) and (cast('2006-01-17' as date) + 60)
GROUP BY 1,2
order by product_type
select segment_name,
product_type,
count (distinct account_id)
FROM NL_ACCT
where
ind = 'N'
and
EM_ind = 'N'
and product_type not in ('TAX','PAY')
and acct_open_dt between (cast('2006-01-17' as date)) and (cast('2006-01-17' as date) + 30)
group by 1,2
order by product_typeSomething like:
SELECT segment_name, product_type,
SUM(CASE WHEN account_id IN ('TAX','PAY') and
acct_open_dt BETWEEN TO_DATE('2006-01-17', 'yyyy-mm-dd') and
TO_DATE('2006-01-17', 'yyyy-mm-dd') + 60 THEN 1
ELSE 0 END) tax_pay,
SUM(CASE WHEN account_id NOT IN ('TAX','PAY') and
acct_open_dt BETWEEN TO_DATE('2006-01-17', 'yyyy-mm-dd') and
TO_DATE('2006-01-17', 'yyyy-mm-dd') + 30 THEN 1
ELSE 0 END) not_tax_pay
FROM NL_ACCT
WHERE ind = 'N' and
em_ind = 'N' and
acct_open_dt BETWEEN TO_DATE('2006-01-17', 'yyyy-mm-dd') and
TO_DATE('2006-01-17', 'yyyy-mm-dd') + 60
GROUP BY segment_name, product_type
ORDER BY product_typeNote: You cannor GROUP BY 1,2, you need to explicitly name the columns to group by.
HTH
John -
Can we use 0INFOPROV as a selection in Load from Data Stream
Hi,
We have implemented BW-SEM BPS and BCS (SEM-BW - 602 and BI 7 ) in our company.
We have two BPS cubes for Cost Center and Revenue Planning and we have Actuals Data staging cube, we use 0SEM_BCS_10 to load actuals.
We created a MultiProvider on BPS cubes and Staging cube as a Source Data Basis for BCS.
Issue:
When loading plan data or Actuals data into BCS (0BCS_C11) cube using Load from Data Stream method, we have performance issue, We automated load process in a Process Chain. Some times it take about 20 hrs for only Plan data load for 3 group currencies and then elimination tasks.
What I noticed is, (for example/) when loading Plan data, system is also reading Actuals Cube which is not required, there is no selection available in Mapping or selection tab where I can restrict data load from a particular cube.
I tried to add 0INFOPROV into databasis but then it doen't show up as selection option in the data collection tasks.
Is there a way where I can restrict data load into BCS using this load option and able to restrict on cube I will be reading data from ?
I know that there is a filter Badi available, but not sure how it works.
Thanks !!
Naveen Rao KattelaThanks Eugene,
We do have other characteristics like Value Type (10 = Actual and 20 = Plan) and Version (100 = USD Actual and 200 = USD Plan), but when I am loading data into BCS using Load from Data Stream method, the request goes to all the underlying cubes, which in my case are Planning cubes and Actual Cube, but I don't want request to goto Actual Cube when I am running only Plan load. I think its causing some performance issue.
For this reason I am thinking if I can use 0INFOPROV as we use in Bex queries to filter the InfoProvider so that the data load performance will improve.
I was able to to bring in 0INFOPROV into DataBasis by adding 0INFOPROV in the characteristics folder used by the Data Basis.
I am able to see this InfoObject Data Stream Fileds tab. I checked marked it to use it in the selection and regenerated the databasis.
I was expecting that now this field would be available for selection in data collection method, but its not.
So If its confirmed that there is no way we can use 0INFOPROV as a selection then I would suggest my client for a redesign of the DataBasis it self.
Thanks,
Naveen Rao Kattela -
How to use the CASE Expression in Where Cluase?
Hi All,
I'm trying to use the CASE Expression in the Where Clause at some trigger on the Form?
I've tried this Code:
Declare
N Number;
begin
SELECT COUNT(E.EMP_SID)
INTO N
FROM EMPLOYEES E, RANKS R
WHERE CASE WHEN R.qualification_sid = 1104 AND E.rank_sid = 8 THEN
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.spe_per)+1)
ELSE
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.mili_yea_per)+1)
END
BETWEEN TO_DATE('01-07-2011', 'DD-MM-RR') AND TO_DATE('31-07-2011', 'DD-MM-RR');
END;
When I run this code as a normal query at any SQL editor it works successfully, But When I Compile it at some trigger on the Form it gives me this error:
Encountered the symbol "CASE" when expecting one of the following:
( - + mod ......
Heeey how to specify the previous code to be shown as code in the thread?
Note: I'm using Forms 6iOK I tried it and worked but for one condition:
WHERE DECODE (E.qualification_sid, 1104,
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.spe_per)+1),
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.mili_yea_per)+1))
BETWEEN TO_DATE('01-07-2011', 'DD-MM-RR') AND TO_DATE('31-07-2011', 'DD-MM-RR')
But how to put two conditions for the same Expression:
WHERE DECODE ((E.qualification_sid, 1104) AND (E.RANK_SID, 8),
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.spe_per)+1),
(TO_DATE(E.RANK_DATE, 'DD-MM-RR')+(365*M.mili_yea_per)+1))
BETWEEN TO_DATE('01-07-2011', 'DD-MM-RR') AND TO_DATE('31-07-2011', 'DD-MM-RR')
The previous code gives me this error: missing right parenthesis -
Set Parameter id is not working in case of select-options
Hi,
i am using the below code to get the SWIA first field fill with some data which i am getting by logic written..but its not getting filled since in tcode the first input box is select-options not a parameter..if it would have been a parameter than my logic would have worked finest. so kindly suggest what to do now in case of select-options.
form user_command using p_ucomm type sy-ucomm
p_selfield type slis_selfield.
data : wi type sww_wiid .
clear : wi .
read table it_final into wa_final index p_selfield-tabindex.
if sy-subrc = 0.
check ( wa_final-wi_id is not initial ).
wi = wa_final-wi_id .
case p_ucomm.
when '&IC1'.
set parameter id 'WID' field wi.
call transaction 'SWIA'and skip first screen.
endcase.
endif.
endform.
Regards,
HiMThanQ..i got you totally..thanks to remind
Regards,
HiM -
I try to do one insert with case and select and I can't, I don't know why:
This is what I want
I have one column in the TAUX_MEDIA_PPM named GRAU. IF GRAU = 'TIPO', the I have to do one type of INSERT, if is = 'ATRIBUTO' I have to do another type of INSERT and ELSE, another type of INSERT.
This is what I tested for the last time:
SELECT T1.GRAU,
CASE
WHEN T1.GRAU = 'TIPO' THEN
INSERT INTO TF_MEDIA_PPM__TESTE (
MEDIA_PPM_SEQ, DATA_SK, ESCOPO_SK, MOTIVO_SK, PERIODO_TIPO, MEDIA_PPM_TIPO, TRES_SIGMA_TIPO, SEIS_SIGMA_TIPO,
PERIODO_ATRIBUTO, MEDIA_PPM_ATRIBUTO, TRES_SIGMA_ATRIBUTO, SEIS_SIGMA_ATRIBUTO, PERIODO_ATRIBCOMPL, MEDIA_PPM_ATRIBCOMPL,
TRES_SIGMA_ATRIBCOMPL, SEIS_SIGMA_ATRIBCOMPL
) VALUES (
SEQ_TF_MEDIA_PPM.nextval, T2.DATA_SK, T1.ESCOPO_SK, T1.MOTIVO_SK, NULL, T2.MEDIA, T2.ALERTA, T2.ATENCAO, NULL,
0, 0, 0, NULL, 0, 0, 0
WHEN T1.GRAU = 'ATRIBUTO' THEN
INSERT INTO TF_MEDIA_PPM__TESTE (
MEDIA_PPM_SEQ, DATA_SK, ESCOPO_SK, MOTIVO_SK, PERIODO_TIPO, MEDIA_PPM_TIPO, TRES_SIGMA_TIPO, SEIS_SIGMA_TIPO,
PERIODO_ATRIBUTO, MEDIA_PPM_ATRIBUTO, TRES_SIGMA_ATRIBUTO, SEIS_SIGMA_ATRIBUTO, PERIODO_ATRIBCOMPL, MEDIA_PPM_ATRIBCOMPL,
TRES_SIGMA_ATRIBCOMPL, SEIS_SIGMA_ATRIBCOMPL
) VALUES (
SEQ_TF_MEDIA_PPM.nextval, T2.DATA_SK, T1.ESCOPO_SK, T1.MOTIVO_SK, NULL, 0, 0, 0, NULL,
T2.MEDIA, T2.ALERTA, T2.ATENCAO, NULL, 0, 0, 0
WHEN T1.GRAU = 'ATRIB_COMPL' THEN
INSERT INTO TF_MEDIA_PPM__TESTE (
MEDIA_PPM_SEQ, DATA_SK, ESCOPO_SK, MOTIVO_SK, PERIODO_TIPO, MEDIA_PPM_TIPO, TRES_SIGMA_TIPO, SEIS_SIGMA_TIPO,
PERIODO_ATRIBUTO, MEDIA_PPM_ATRIBUTO, TRES_SIGMA_ATRIBUTO, SEIS_SIGMA_ATRIBUTO, PERIODO_ATRIBCOMPL, MEDIA_PPM_ATRIBCOMPL,
TRES_SIGMA_ATRIBCOMPL, SEIS_SIGMA_ATRIBCOMPL
) VALUES (
SEQ_TF_MEDIA_PPM.nextval, T2.DATA_SK, T1.ESCOPO_SK, T1.MOTIVO_SK, NULL, 0, 0, 0, NULL,
0, 0, 0, NULL, T2.MEDIA, T2.ALERTA, T2.ATENCAO
END
FROM TAUX_MEDIA_PPM
JOIN TX_MEDIA T2 ON T2.CHAVE = T1.CHAVE;
I don't know what I have to do now...
Regards,
Tiberio
Edited by: MrTiberio on 27/03/2012 06:55
Fixing code formattingI used this:
INSERT INTO tf_media_ppm__teste
(media_ppm_seq,data_sk,escopo_sk,motivo_sk,periodo_tipo,media_ppm_tipo,tres_sigma_tipo,seis_sigma_tipo,periodo_atributo,media_ppm_atributo
,tres_sigma_atributo,seis_sigma_atributo,periodo_atribcompl,media_ppm_atribcompl,tres_sigma_atribcompl,seis_sigma_atribcompl)
SELECT seq_tf_media_ppm.nextval,t2.data_sk,t1.escopo_sk,t1.motivo_sk,NULL
,CASE t1.grau WHEN 'TIPO' THEN t2.media ELSE 0 END
,CASE t1.grau WHEN 'TIPO' THEN t2.alerta ELSE 0 END
,CASE t1.grau WHEN 'TIPO' THEN t2.atencao ELSE 0 END
,NULL
,CASE t1.grau WHEN 'ATRIBUTO' THEN t2.media ELSE 0 END
,CASE t1.grau WHEN 'ATRIBUTO' THEN t2.alerta ELSE 0 END
,CASE t1.grau WHEN 'ATRIBUTO' THEN t2.atencao ELSE 0 END
,NULL
,CASE t1.grau WHEN 'ATRIB_COMPL' THEN t2.media ELSE 0 END
,CASE t1.grau WHEN 'ATRIB_COMPL' THEN t2.alerta ELSE 0 END
,CASE t1.grau WHEN 'ATRIB_COMPL' THEN t2.atencao ELSE 0 END
FROM TAUX_MEDIA_PPM T1
JOIN TX_MEDIA T2 ON T2.CHAVE = T1.CHAVE;
and worked fine.
Thanks for both of you ! -
Hello,
in Oracle8 I've the following problem:
The statement
SELECT ''' | ''||' || 'rpad'
|| '(''' || column_name
|| ''',' ||
(CASE WHEN (data_type = 'VARCHAR2' AND
data_length > 50) THEN
to_number('50')
WHEN (data_type = 'CHAR' AND
data_length > 50) THEN
to_number('50')
WHEN (data_type = 'CLOB' AND
data_length > 50) THEN
to_number('50')
WHEN (data_type = 'DATE' AND
data_length != 19) THEN
to_number('19')
ELSE
data_length
END )
|| ', '' '')||' AS column_name
FROM dba_tab_columns
WHERE
table_name = upper('DBA_TABLES') AND
owner = upper('SYS')
ORDER BY column_id;
works fine but defining the same statement as a cursor in a PL/SQL Procedure, I got a
Error: PLS-00103: Encountered the symbol "CASE" when expecting one of the following:
( - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
execute forall time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string>
The same procedure can be compiled in Oracle9i without errors.
Does anybody know if there are any restrictions using CASE statements in a PL/SQL CURSOR in Oracle8?
Thanks
PatricHi,
I am encountering the same problem.
Can u suggest the decode statement used instead of case
for this select clause which uses the CASE statement ?
SELECT
CASE
WHEN S.cmpy_num = S.cpty_borg_num THEN
''OURS''
ELSE
''THEIRS''
END AS SDIOwner,
From TABLE -
Hi,
I have a scenario where my stored procedure takes 5 parameters and the users can pass NULL or some value to these parameters and based on the parameters, I need to pull data from various tables.
Is it possible to use a case statement in the join, similar the one in the below example. I'm getting error when I use the below type of statement.
select a.*
from a
case
when parameter1=1 then
inner join a on a.id = b.id
when parameter1=2 then
inner join a on a.id = c.id
end;
Please let me know, if this type of statement works, and if it works will it create any performance issues?. If the above doesn't work, could you please give me some alternate solutions?
Thanks.Here's a technique for joining A to B or C depending on the input parameters. In theory, you are joining to both tables but the execution plan includes filters to skip whichever join is not appropriate. The drawback is that you have to do outer joins, not inner ones.
CREATE TABLE A AS SELECT LEVEL ak FROM dual CONNECT BY LEVEL <= 100;
CREATE TABLE b AS SELECT ak, bk
FROM A, (SELECT LEVEL bk FROM dual CONNECT BY LEVEL <= 10);
CREATE TABLE c(ak, ck) AS SELECT ak, bk*10 FROM b;
variable p1 NUMBER;
variable p2 NUMBER;
exec :p1 := 1;
exec :p2 := 20;
SELECT /*+ gather_plan_statistics */ A.ak, nvl(b.bk, c.ck) otherk FROM A
LEFT JOIN b ON A.ak = b.ak AND :p1 IS NOT NULL AND b.bk = :p1
LEFT JOIN c ON A.ak = c.ak AND :p1 is null and :p2 IS NOT NULL and c.ck = :p2
WHERE A.ak <= 9;
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'IOSTATS LAST'));
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
| 0 | SELECT STATEMENT | | 1 | | 9 |00:00:00.01 | 7 |
|* 1 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 7 |
|* 2 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 7 |
|* 3 | TABLE ACCESS FULL | A | 1 | 9 | 9 |00:00:00.01 | 3 |
| 4 | VIEW | VW_DCL_5532A50F | 1 | 9 | 9 |00:00:00.01 | 4 |
|* 5 | FILTER | | 1 | | 9 |00:00:00.01 | 4 |
|* 6 | TABLE ACCESS FULL| B | 1 | 9 | 9 |00:00:00.01 | 4 |
| 7 | VIEW | VW_DCL_5532A50F | 1 | 9 | 0 |00:00:00.01 | 0 |
|* 8 | FILTER | | 1 | | 0 |00:00:00.01 | 0 |
|* 9 | TABLE ACCESS FULL | C | 0 | 9 | 0 |00:00:00.01 | 0 |
Predicate Information (identified by operation id):
1 - access("A"."AK"="ITEM_0")
2 - access("A"."AK"="ITEM_1")
3 - filter("A"."AK"<=9)
5 - filter(:P1 IS NOT NULL)
6 - filter(("B"."AK"<=9 AND "B"."BK"=:P1))
8 - filter((:P2 IS NOT NULL AND :P1 IS NULL))
9 - filter(("C"."AK"<=9 AND "C"."CK"=:P2))
You can see that table C was not really accessed: the buffer count is 0.
exec :p1 := NULL;
SELECT /*+ gather_plan_statistics */ A.ak, nvl(b.bk, c.ck) otherk FROM A
LEFT JOIN b ON A.ak = b.ak AND :p1 IS NOT NULL AND b.bk = :p1
LEFT JOIN c ON A.ak = c.ak AND :p1 is null and :p2 IS NOT NULL and c.ck = :p2
WHERE A.ak <= 9;
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'IOSTATS LAST'));
Now table B is not accessed.
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
| 0 | SELECT STATEMENT | | 1 | | 9 |00:00:00.02 | 7 | 2 |
|* 1 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.02 | 7 | 2 |
|* 2 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 3 | 0 |
|* 3 | TABLE ACCESS FULL | A | 1 | 9 | 9 |00:00:00.01 | 3 | 0 |
| 4 | VIEW | VW_DCL_5532A50F | 1 | 9 | 0 |00:00:00.01 | 0 | 0 |
|* 5 | FILTER | | 1 | | 0 |00:00:00.01 | 0 | 0 |
|* 6 | TABLE ACCESS FULL| B | 0 | 9 | 0 |00:00:00.01 | 0 | 0 |
| 7 | VIEW | VW_DCL_5532A50F | 1 | 9 | 9 |00:00:00.01 | 4 | 2 |
|* 8 | FILTER | | 1 | | 9 |00:00:00.01 | 4 | 2 |
|* 9 | TABLE ACCESS FULL | C | 1 | 9 | 9 |00:00:00.01 | 4 | 2 | -
Case insensitive selects with 'like'
I use a 10g database (10.2.0.2 same behaviour with 10.2.0.1). What we want is case insensitive selects with 'like' operator in the where clause. NLS_COMP is set to 'LINGUISTIC' and NLS_SORT is set to 'BINARY_CI.
In a table we have two columns one of type 'varchar2' one of type 'nvarchar2'. The databases national character set is set to UTF8. Case insensitive sorting works with both columns. Select statements with '.... where varchar2col like '%r%' returns also values with upper case 'R' values (that is what I expect).
The select statements with '.... where nvarchar2col like '%r%' however does not return the row with upper case 'R' values.
I used SQL*Plus: Release 10.2.0.3.0 and other clients and the behaviour is the same so
I think it is not client related.
Is that a known issue or is there any other parameter to set for UTF8 nvarchar columns?
Any hint is very much appreciated! Here are the nls settings in database, instance and session:
DPARAMETER DVALUE IVALUE SVALUE
NLS_CHARACTERSET WE8ISO8859P1
NLS_COMP BINARY LINGUISTIC LINGUISTIC
NLS_LANGUAGE AMERICAN AMERICAN AMERICAN
NLS_NCHAR_CHARACTERSET UTF8
NLS_RDBMS_VERSION 10.2.0.1.0
NLS_SORT BINARY BINARY_CI BINARY_CI
NLS_TERRITORY AMERICA AMERICA AMERICAOK. Found out what the problem is. It is obviously the client.
While using the instant client and setting the parameters (NLS_SORT=BINARY_CI and NLS_COMP=LINGUISTIC) as environment variables does not work correctly, at least not for nvarchar2 fields. The nls_session_parameters show the correct values, but selects with 'like' operators in the where clause do not return case insensitive. Issuing the 'alter session' commands and again setting the nls parameters solves the problem.
Using the full client installation also works, in case the parameters are set in the registry on windows systems. With the full client it it not necessary to issue the 'alter session' commands again.
So obviously the problem is instant client and nvarchar2 field related. That's too bad.... -
I have 6 radio buttons.i want to use a case statement to read them.
i have 6 radio buttons.i grouped them.i want to read them in a subroutine using a case statement.how can i read them
Hi Leela,
You cannot use the Case statement to read the radio buttons.
nstead you will have to use Loop at Screen under At Selection Screen Output.
Please refer to the below code or the reference:
*& Report ZHYPERION *
*& Project : SubSea7
Created on : 07/02/2007
Created by : Puneet Jhari.
*& Purpose : For SAP Interface download Hyperion.
REPORT zhyperion NO STANDARD PAGE HEADING MESSAGE-ID zhyper.
Start of Data Declaration
TYPE-POOLS : truxs,vrm.
TABLES : glpct,cepc.
DATA : var TYPE i,
total TYPE f.
DATA : BEGIN OF wa2,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa2.
DATA : BEGIN OF wa3,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa3.
DATA : BEGIN OF wa4,
racct LIKE glpct-racct,
END OF wa4.
DATA : BEGIN OF wa5,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
total1(8) TYPE p DECIMALS 2,
END OF wa5.
DATA : BEGIN OF wa9,
khinr LIKE cepc-khinr,
racct LIKE glpct-racct,
total1(8) TYPE p DECIMALS 2,
END OF wa9.
DATA : BEGIN OF wa6,
khinr LIKE cepc-khinr,
prctr LIKE cepc-prctr,
rprctr LIKE glpct-rprctr,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa6.
DATA : BEGIN OF wa7,
khinr LIKE cepc-khinr,
prctr LIKE cepc-prctr,
rprctr LIKE glpct-rprctr,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa7.
DATA : itab3 LIKE TABLE OF wa2,
itab4 LIKE TABLE OF wa3,
itab5 LIKE TABLE OF wa4 WITH HEADER LINE,
itab6 LIKE TABLE OF wa5 WITH HEADER LINE,
itab7 LIKE TABLE OF wa6,
itab8 LIKE TABLE OF wa7,
itab10 LIKE TABLE OF wa9.
DATA : flag(1) TYPE c,
temp(6) TYPE c.
DATA : itab2 TYPE truxs_t_text_data,
itab9 TYPE truxs_t_text_data WITH HEADER LINE.
DATA : name TYPE vrm_id,
list TYPE vrm_values,
value LIKE LINE OF list,
FILNAM11 TYPE STRING,
FILNAM21 TYPE STRING.
End of Data Declaration
Begin of Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: r1 DEFAULT 'X' RADIOBUTTON GROUP g1 USER-COMMAND rad1,
r2 RADIOBUTTON GROUP g1 .
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-005.
PARAMETERS: rbukrs1 TYPE glpct-rbukrs MODIF ID ful,
khinr1 TYPE cepc-khinr AS LISTBOX VISIBLE LENGTH 20
MODIF ID sam ,
ryear1 TYPE glpct-ryear MODIF ID ful,
ryear2 TYPE glpct-ryear MODIF ID sam,
rpmax1 TYPE i MODIF ID ful,
rpmax2 TYPE i MODIF ID sam,
filnam1 TYPE rlgrap-filename MODIF ID ful,
filnam2 TYPE RLGRAP-FILENAME MODIF ID sam.
SELECTION-SCREEN END OF BLOCK b3.
End of Selection Screen
AT SELECTION-SCREEN OUTPUT
AT SELECTION-SCREEN OUTPUT.
PERFORM populate. "For populating the drop-down list.
CLEAR VALUE.
REFRESH LIST.
NAME = 'KHINR1'.
VALUE-KEY = '1S7_NOCASV'.
VALUE-TEXT = '1S7_NOCASV'.
APPEND VALUE TO LIST.
VALUE-KEY = '1S7_NOCJOT'.
VALUE-TEXT = '1S7_NOCJOT'.
APPEND VALUE TO LIST.
LOOP AT SCREEN. "For toggling between the selection screens.
IF r1 EQ 'X'.
IF screen-group1 = 'SAM'.
screen-active = 0.
ENDIF.
ELSEIF r2 EQ 'X'.
IF screen-group1 = 'FUL'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
For the Drop-Down Listbox
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Begin of Data Selection
START-OF-SELECTION.
When Company Code radio button is selected.
IF r1 EQ 'X'. "If Company Code radio button is selected.
IF rbukrs1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF rpmax1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF ryear1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF filnam1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
MOVE FILNAM1 TO FILNAM11.
CASE rpmax1.
WHEN '01'.
SELECT ryear rbukrs racct ksl01
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '02'.
SELECT ryear rbukrs racct ksl02
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '03'.
SELECT ryear rbukrs racct ksl03
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '04'.
SELECT ryear rbukrs racct ksl04
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '05'.
SELECT ryear rbukrs racct ksl05
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '06'.
SELECT ryear rbukrs racct ksl06
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '07'.
SELECT ryear rbukrs racct ksl07
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '08'.
SELECT ryear rbukrs racct ksl08
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '09'.
SELECT ryear rbukrs racct ksl09
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '10'.
SELECT ryear rbukrs racct ksl10
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '11'.
SELECT ryear rbukrs racct ksl11
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '12'.
SELECT ryear rbukrs racct ksl12
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '13'.
SELECT ryear rbukrs racct ksl13
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '14'.
SELECT ryear rbukrs racct ksl14
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '15'.
SELECT ryear rbukrs racct ksl15
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '16'.
SELECT ryear rbukrs racct ksl16
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
ENDCASE.
MOVE itab3 TO itab4.
LOOP AT itab3 INTO wa2.
flag = 0.
LOOP AT itab5 INTO wa4.
IF wa2-racct EQ wa4-racct.
flag = 1.
EXIT.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM itab5.
IF flag = 1.
CONTINUE.
ENDIF.
LOOP AT itab4 INTO wa3.
IF wa2-rbukrs EQ wa3-rbukrs AND wa2-racct EQ wa3-racct AND
wa2-ryear EQ wa3-ryear.
total = total + wa3-ksl01.
ENDIF.
ENDLOOP.
wa5-rbukrs = wa2-rbukrs.
wa5-racct = wa2-racct+4(6).
wa5-total1 = total.
APPEND wa5 TO itab6.
CLEAR total.
APPEND wa2-racct TO itab5.
ENDLOOP.
If no data is available corresponding to the values entered.
IF itab6[] IS INITIAL.
MESSAGE i003.
ENDIF.
For making the file Comma separated
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = ','
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
TABLES
i_tab_sap_data = itab6
CHANGING
i_tab_converted_data = itab2
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
For downloading it to the Presentation Server
MOVE itab2[] TO itab9[].
OPEN DATASET filnam1 FOR OUTPUT IN LEGACY TEXT MODE.
LOOP AT itab9.
TRANSFER itab9 TO filnam1.
ENDLOOP.
CLOSE DATASET filnam1.
IF sy-subrc EQ 0.
MESSAGE s004.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = FILNAM11
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
IMPORTING
FILELENGTH =
tables
data_tab = itab2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc eq 0.
message s004.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
When Region radio button is selected.
ELSEIF r2 EQ 'X'.
IF khinr1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF rpmax2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF ryear2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF filnam2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
MOVE FILNAM2 TO FILNAM21.
CASE rpmax2.
WHEN '01'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl01
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '02'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl02
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '03'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl03
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '04'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl04
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '05'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl05
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '06'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl06
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '07'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl07
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '08'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl08
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '09'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl09
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '10'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl10
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '11'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl11
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '12'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl12
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '13'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl13
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '14'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl14
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '15'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl15
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '16'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl16
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
ENDCASE.
MOVE itab7 TO itab8.
LOOP AT itab7 INTO wa6.
flag = 0.
LOOP AT itab5 INTO wa4.
IF wa6-racct EQ wa4-racct.
flag = 1.
EXIT.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM itab5.
IF flag = 1.
CONTINUE.
ENDIF.
LOOP AT itab8 INTO wa7.
IF wa6-rbukrs EQ wa7-rbukrs AND wa6-racct EQ wa7-racct AND
wa6-ryear EQ wa7-ryear.
total = total + wa7-ksl01.
ENDIF.
ENDLOOP.
wa9-khinr = khinr1.
wa9-racct = wa6-racct+4(6).
wa9-total1 = total.
APPEND wa9 TO itab10.
CLEAR total.
APPEND wa6-racct TO itab5.
ENDLOOP.
*If no data is available corresponding to the values entered.
IF itab10 IS INITIAL.
MESSAGE i003.
ENDIF.
For making the file Comma separated
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = ','
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
TABLES
i_tab_sap_data = itab10
CHANGING
i_tab_converted_data = itab2
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
For downloading it to the Presentation Server
MOVE itab2[] TO itab9[].
OPEN DATASET filnam2 FOR OUTPUT IN LEGACY TEXT MODE.
LOOP AT itab9.
TRANSFER itab9 TO filnam2.
ENDLOOP.
CLOSE DATASET filnam2.
IF sy-subrc EQ 0.
MESSAGE s004.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = FILNAM21
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
IMPORTING
FILELENGTH =
tables
data_tab = itab2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc eq 0.
message s004.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*& Form POPULATE
text
FORM populate.
CLEAR value.
REFRESH list.
name = 'KHINR1'.
value-key = '1S7_SUBSEA'.
value-text = '1S7_SUBSEA'.
APPEND value TO list.
value-key = '1S7_GEN'.
value-text = '1S7_GEN'.
APPEND value TO list.
value-key = '1S7'.
value-text = '1S7'.
APPEND value TO list.
value-key = '1S7_CORPTP'.
value-text = '1S7_CORPTP'.
APPEND value TO list.
value-key = '1S7_BRRE'.
value-text = '1S7_BRRE'.
APPEND value TO list.
value-key = '1S7_BRCON'.
value-text = '1S7_BRCON'.
APPEND value TO list.
value-key = '1S7_BRCJOB'.
value-text = '1S7_BRCJOB'.
APPEND value TO list.
value-key = '1S7_BRCJBU'.
value-text = '1S7_BRCJBU'.
APPEND value TO list.
value-key = '1S7_BRCJCO'.
value-text = '1S7_BRCJCO'.
APPEND value TO list.
value-key = '1S7_BRCJIR'.
value-text = '1S7_BRCJIR'.
APPEND value TO list.
value-key = '1S7_BRCJEN'.
value-text = '1S7_BRCJEN'.
APPEND value TO list.
value-key = '1S7_BRCJPI'.
value-text = '1S7_BRCJPI'.
APPEND value TO list.
value-key = '1S7_BRCJSU'.
value-text = '1S7_BRCJSU'.
APPEND value TO list.
value-key = '1S7_BRCJFL'.
value-text = '1S7_BRCJFL'.
APPEND value TO list.
value-key = '1S7_BRCJOT'.
value-text = '1S7_BRCJOT'.
APPEND value TO list.
value-key = '1S7_BRCASV'.
value-text = '1S7_BRCASV'.
APPEND value TO list.
value-key = '1S7_BRCASE'.
value-text = '1S7_BRCASE'.
APPEND value TO list.
value-key = '1S7_BRCOOC'.
value-text = '1S7_BRCOOC'.
APPEND value TO list.
value-key = '1S7_BRCOHD'.
value-text = '1S7_BRCOHD'.
APPEND value TO list.
value-key = '1S7_BRCGEN'.
value-text = '1S7_BRCGEN'.
APPEND value TO list.
value-key = '1S7_BRDRI'.
value-text = '1S7_BRDRI'.
APPEND value TO list.
value-key = '1S7_BRDJOB'.
value-text = '1S7_BRDJOB'.
APPEND value TO list.
value-key = '1S7_BRDASV'.
value-text = '1S7_BRDASV'.
APPEND value TO list.
value-key = '1S7_BRDASE'.
value-text = '1S7_BRDASE'.
APPEND value TO list.
value-key = '1S7_BRDAEW'.
value-text = '1S7_BRDAEW'.
APPEND value TO list.
value-key = '1S7_BRDAEO'.
value-text = '1S7_BRDAEO'.
APPEND value TO list.
value-key = '1S7_BRDAET'.
value-text = '1S7_BRDAET'.
APPEND value TO list.
value-key = '1S7_BRDOOC'.
value-text = '1S7_BRDOOC'.
APPEND value TO list.
value-key = '1S7_BRDOHD'.
value-text = '1S7_BRDOHD'.
APPEND value TO list.
value-key = '1S7_BRVER'.
value-text = '1S7_BRVER'.
APPEND value TO list.
value-key = '1S7_BRVJOB'.
value-text = '1S7_BRVJOB'.
APPEND value TO list.
value-key = '1S7_BRVASV'.
value-text = '1S7_BRVASV'.
APPEND value TO list.
value-key = '1S7_BRVASE'.
value-text = '1S7_BRVASE'.
APPEND value TO list.
value-key = '1S7_BRVOOC'.
value-text = '1S7_BRVOOC'.
APPEND value TO list.
value-key = '1S7_BRVOHD'.
value-text = '1S7_BRVOHD'.
APPEND value TO list.
value-key = '1S7_UKRE'.
value-text = '1S7_UKRE'.
APPEND value TO list.
value-key = '1S7_UKCON'.
value-text = '1S7_UKCON'.
APPEND value TO list.
value-key = '1S7_UKCJOB'.
value-text = '1S7_UKCJOB'.
APPEND value TO list.
value-key = '1S7_UKCJBU'.
value-text = '1S7_UKCJBU'.
APPEND value TO list.
value-key = '1S7_UKCJCO'.
value-text = '1S7_UKCJCO'.
APPEND value TO list.
value-key = '1S7_UKCJIR'.
value-text = '1S7_UKCJIR'.
APPEND value TO list.
value-key = '1S7_UKCJEN'.
value-text = '1S7_UKCJEN'.
APPEND value TO list.
value-key = '1S7_UKCJPI'.
value-text = '1S7_UKCJPI'.
APPEND value TO list.
value-key = '1S7_UKCJSU'.
value-text = '1S7_UKCJSU'.
APPEND value TO list.
value-key = '1S7_UKCJFL'.
value-text = '1S7_UKCJFL'.
APPEND value TO list.
value-key = '1S7_UKCJOT'.
value-text = '1S7_UKCJOT'.
APPEND value TO list.
value-key = '1S7_UKCASV'.
value-text = '1S7_UKCASV'.
APPEND value TO list.
value-key = '1S7_UKCASE'.
value-text = '1S7_UKCASE'.
APPEND value TO list.
value-key = '1S7_UKCOOC'.
value-text = '1S7_UKCOOC'.
APPEND value TO list.
value-key = '1S7_UKBA'.
value-text = '1S7_UKBA'.
APPEND value TO list.
value-key = '1S7_UKBATE'.
value-text = '1S7_UKBATE'.
APPEND value TO list.
value-key = '1S7_UKCOHD'.
value-text = '1S7_UKCOHD'.
APPEND value TO list.
value-key = '1S7_UKCGEN'.
value-text = '1S7_UKCGEN'.
APPEND value TO list.
value-key = '1S7_UKDRI'.
value-text = '1S7_UKDRI'.
APPEND value TO list.
value-key = '1S7_UKDJOB'.
value-text = '1S7_UKDJOB'.
APPEND value TO list.
value-key = '1S7_UKDASV'.
value-text = '1S7_UKDASV'.
APPEND value TO list.
value-key = '1S7_UKDASE'.
value-text = '1S7_UKDASE'.
APPEND value TO list.
value-key = '1S7_UKDAEW'.
value-text = '1S7_UKDAEW'.
APPEND value TO list.
value-key = '1S7_UKDAEO'.
value-text = '1S7_UKDAEO'.
APPEND value TO list.
value-key = '1S7_UKDAET'.
value-text = '1S7_UKDAET'.
APPEND value TO list.
value-key = '1S7_UKDOOC'.
value-text = '1S7_UKDOOC'.
APPEND value TO list.
value-key = '1S7_UKDOHD'.
value-text = '1S7_UKDOHD'.
APPEND value TO list.
value-key = '1S7_UKVER'.
value-text = '1S7_UKVER'.
APPEND value TO list.
value-key = '1S7_UKVJOB'.
value-text = '1S7_UKVJOB'.
APPEND value TO list.
value-key = '1S7_UKVASV'.
value-text = '1S7_UKVASV'.
APPEND value TO list.
value-key = '1S7_UKVASE'.
value-text = '1S7_UKVASE'.
APPEND value TO list.
value-key = '1S7_UKVOOC'.
value-text = '1S7_UKVOOC'.
APPEND value TO list.
value-key = '1S7_UKVOHD'.
value-text = '1S7_UKVOHD'.
APPEND value TO list.
value-key = '1S7_NORE'.
value-text = '1S7_NORE'.
APPEND value TO list.
value-key = '1S7_NOCON'.
value-text = '1S7_NOCON'.
APPEND value TO list.
value-key = '1S7_NOCJOB'.
value-text = '1S7_NOCJOB'.
APPEND value TO list.
value-key = '1S7_NOCJBU'.
value-text = '1S7_NOCJBU'.
APPEND value TO list.
value-key = '1S7_NOCJCO'.
value-text = '1S7_NOCJCO'.
APPEND value TO list.
value-key = '1S7_NOCJIR'.
value-text = '1S7_NOCJIR'.
APPEND value TO list.
value-key = '1S7_NOCJEN'.
value-text = '1S7_NOCJEN'.
APPEND value TO list.
value-key = '1S7_NOCJPI'.
value-text = '1S7_NOCJPI'.
APPEND value TO list.
value-key = '1S7_NOCJSU'.
value-text = '1S7_NOCJSU'.
APPEND value TO list.
value-key = '1S7_NOCJFL'.
value-text = '1S7_NOCJFL'.
APPEND value TO list.
value-key = '1S7_NOCJOT'.
value-text = '1S7_NOCJOT'.
APPEND value TO list.
value-key = '1S7_NOCASV'.
value-text = '1S7_NOCASV'.
APPEND value TO list.
value-key = '1S7_NOCASE'.
value-text = '1S7_NOCASE'.
APPEND value TO list.
value-key = '1S7_NOCOOC'.
value-text = '1S7_NOCOOC'.
APPEND value TO list.
value-key = '1S7_NOCOHD'.
value-text = '1S7_NOCOHD'.
APPEND value TO list.
value-key = '1S7_NOCGEN'.
value-text = '1S7_NOCGEN'.
APPEND value TO list.
value-key = '1S7_NODRI'.
value-text = '1S7_NODRI'.
APPEND value TO list.
value-key = '1S7_NODJOB'.
value-text = '1S7_NODJOB'.
APPEND value TO list.
value-key = '1S7_NODASV'.
value-text = '1S7_NODASV'.
APPEND value TO list.
value-key = '1S7_NODASE'.
value-text = '1S7_NODASE'.
APPEND value TO list.
value-key = '1S7_NODAEW'.
value-text = '1S7_NODAEW'.
APPEND value TO list.
value-key = '1S7_NODAEO'.
value-text = '1S7_NODAEO'.
APPEND value TO list.
value-key = '1S7_NODAET'.
value-text = '1S7_NODAET'.
APPEND value TO list.
value-key = '1S7_NODOOC'.
value-text = '1S7_NODOOC'.
APPEND value TO list.
value-key = '1S7_NODOHD'.
value-text = '1S7_NODOHD'.
APPEND value TO list.
value-key = '1S7_NOVER'.
value-text = '1S7_NOVER'.
APPEND value TO list.
value-key = '1S7_NOVJOB'.
value-text = '1S7_NOVJOB'.
APPEND value TO list.
value-key = '1S7_NOVASV'.
value-text = '1S7_NOVASV'.
APPEND value TO list.
value-key = '1S7_NOVASE'.
value-text = '1S7_NOVASE'.
APPEND value TO list.
value-key = '1S7_NOVOOC'.
value-text = '1S7_NOVOOC'.
APPEND value TO list.
value-key = '1S7_NOVOHD'.
value-text = '1S7_NOVOHD'.
APPEND value TO list.
value-key = '1S7_GORE'.
value-text = '1S7_GORE'.
APPEND value TO list.
value-key = '1S7_GOCON'.
value-text = '1S7_GOCON'.
APPEND value TO list.
value-key = '1S7_GOCJOB'.
value-text = '1S7_GOCJOB'.
APPEND value TO list.
value-key = '1S7_GOCJBU'.
value-text = '1S7_GOCJBU'.
APPEND value TO list.
value-key = '1S7_GOCJCO'.
value-text = '1S7_GOCJCO'.
APPEND value TO list.
value-key = '1S7_GOCJIR'.
value-text = '1S7_GOCJIR'.
APPEND value TO list.
value-key = '1S7_GOCJEN'.
value-text = '1S7_GOCJEN'.
APPEND value TO list.
value-key = '1S7_GOCJPI'.
value-text = '1S7_GOCJPI'.
APPEND value TO list.
value-key = '1S7_GOCJSU'.
value-text = '1S7_GOCJSU'.
APPEND value TO list.
value-key = '1S7_GOCJFL'.
value-text = '1S7_GOCJFL'.
APPEND value TO list.
value-key = '1S7_GOCJOT'.
value-text = '1S7_GOCJOT'.
APPEND value TO list.
value-key = '1S7_GOCASV'.
value-text = '1S7_GOCASV'.
APPEND value TO list.
value-key = '1S7_GOCASE'.
value-text = '1S7_GOCASE'.
APPEND value TO list.
value-key = '1S7_GOCOOC'.
value-text = '1S7_GOCOOC'.
APPEND value TO list.
value-key = '1S7_GOCOHD'.
value-text = '1S7_GOCOHD'.
APPEND value TO list.
value-key = '1S7_GOCGEN'.
value-text = '1S7_GOCGEN'.
APPEND value TO list.
value-key = '1S7_GODRI'.
value-text = '1S7_GODRI'.
APPEND value TO list.
value-key = '1S7_GODJOB'.
value-text = '1S7_GODJOB'.
APPEND value TO list.
value-key = '1S7_GODASV'.
value-text = '1S7_GODASV'.
APPEND value TO list.
value-key = '1S7_GODASE'.
value-text = '1S7_GODASE'.
APPEND value TO list.
value-key = '1S7_GODAEW'.
value-text = '1S7_GODAEW'.
APPEND value TO list.
value-key = '1S7_GODAEO'.
value-text = '1S7_GODAEO'.
APPEND value TO list.
value-key = '1S7_GODAET'.
value-text = '1S7_GODAET'.
APPEND value TO list.
value-key = '1S7_GODOOC'.
value-text = '1S7_GODOOC'.
APPEND value TO list.
value-key = '1S7_GODOHD'.
value-text = '1S7_GODOHD'.
APPEND value TO list.
value-key = '1S7_GOVER'.
value-text = '1S7_GOVER'.
APPEND value TO list.
value-key = '1S7_GOVJOB'.
value-text = '1S7_GOVJOB'.
APPEND value TO list.
value-key = '1S7_GOVASV'.
value-text = '1S7_GOVASV'.
APPEND value TO list.
value-key = '1S7_GOVASE'.
value-text = '1S7_GOVASE'.
APPEND value TO list.
value-key = '1S7_GOVOOC'.
value-text = '1S7_GOVOOC'.
APPEND value TO list.
value-key = '1S7_GOVOHD'.
value-text = '1S7_GOVOHD'.
APPEND value TO list.
value-key = '1S7_GVRE'.
value-text = '1S7_GVRE'.
APPEND value TO list.
value-key = '1S7_GVCON'.
value-text = '1S7_GVCON'.
APPEND value TO list.
value-key = '1S7_GVCJOB'.
value-text = '1S7_GVCJOB'.
APPEND value TO list.
value-key = '1S7_GVCJBU'.
value-text = '1S7_GVCJBU'.
APPEND value TO list.
value-key = '1S7_GVCJCO'.
value-text = '1S7_GVCJCO'.
APPEND value TO list.
value-key = '1S7_GVCJIR'.
value-text = '1S7_GVCJIR'.
APPEND value TO list.
value-key = '1S7_GVCJEN'.
value-text = '1S7_GVCJEN'.
APPEND value TO list.
value-key = '1S7_GVCJPI'.
value-text = '1S7_GVCJPI'.
APPEND value TO list.
value-key = '1S7_GVCJSU'.
value-text = '1S7_GVCJSU'.
APPEND value TO list.
value-key = '1S7_GVCJFL'.
value-text = '1S7_GVCJFL'.
APPEND value TO list.
value-key = '1S7_GVCJOT'.
value-text = '1S7_GVCJOT'.
APPEND value TO list.
value-key = '1S7_GVCASV'.
value-text = '1S7_GVCASV'.
APPEND value TO list.
value-key = '1S7_GVCASE'.
value-text = '1S7_GVCASE'.
APPEND value TO list.
value-key = '1S7_GVCOOC'.
value-text = '1S7_GVCOOC'.
APPEND value TO list.
value-key = '1S7_GVCOHD'.
value-text = '1S7_GVCOHD'.
APPEND value TO list.
value-key = '1S7_GVCGEN'.
value-text = '1S7_GVCGEN'.
APPEND value TO list.
value-key = '1S7_GVDRI'.
value-text = '1S7_GVDRI'.
APPEND value TO list.
value-key = '1S7_GVDJOB'.
value-text = '1S7_GVDJOB'.
APPEND value TO list.
value-key = '1S7_GVDASV'.
value-text = '1S7_GVDASV'.
APPEND value TO list.
value-key = '1S7_GVDASE'.
value-text = '1S7_GVDASE'.
APPEND value TO list.
value-key = '1S7_GVDOOC'.
value-text = '1S7_GVDOOC'.
APPEND value TO list.
value-key = '1S7_GVDOHD'.
value-text = '1S7_GVDOHD'.
APPEND value TO list.
value-key = '1S7_GVVER'.
value-text = '1S7_GVVER'.
APPEND value TO list.
value-key = '1S7_GVVJOB'.
value-text = '1S7_GVVJOB'.
APPEND value TO list.
value-key = '1S7_GVVASV'.
value-text = '1S7_GVVASV'.
APPEND value TO list.
value-key = '1S7_GVVASE'.
value-text = '1S7_GVVASE'.
APPEND value TO list.
value-key = '1S7_GVVOOC'.
value-text = '1S7_GVVOOC'.
APPEND value TO list.
value-key = '1S7_GVVOHD'.
value-text = '1S7_GVVOHD'.
APPEND value TO list.
value-key = '1S7_GCRE'.
value-text = '1S7_GCRE'.
APPEND value TO list.
value-key = '1S7_GCCON'.
value-text = '1S7_GCCON'.
APPEND value TO list.
value-key = '1S7_GCCJOB'.
value-text = '1S7_GCCJOB'.
APPEND value TO list.
value-key = '1S7_GCCJBU'.
value-text = '1S7_GCCJBU'.
APPEND value TO list.
value-key = '1S7_GCCJCO'.
value-text = '1S7_GCCJCO'.
APPEND value TO list.
value-key = '1S7_GCCJIR'.
value-text = '1S7_GCCJIR'.
APPEND value TO list.
value-key = '1S7_GCCJEN'.
value-text = '1S7_GCCJEN'.
APPEND value TO list.
value-key = '1S7_GCCJPI'.
value-text = '1S7_GCCJPI'.
APPEND value TO list.
value-key = '1S7_GCCJSU'.
value-text = '1S7_GCCJSU'.
APPEND value TO list.
value-key = '1S7_GCCJFL'.
value-text = '1S7_GCCJFL'.
APPEND value TO list.
value-key = '1S7_GCCJOT'.
value-text = '1S7_GCCJOT'.
APPEND value TO list.
value-key = '1S7_GCCASV'.
value-text = '1S7_GCCASV'.
APPEND value TO list.
value-key = '1S7_GCCASE'.
value-text = '1S7_GCCASE'.
APPEND value TO list.
value-key = '1S7_GCCOOC'.
value-text = '1S7_GCCOOC'.
APPEND value TO list.
value-key = '1S7_GCCOHD'.
value-text = '1S7_GCCOHD'.
APPEND value TO list.
value-key = '1S7_GCCRD'.
value-text = '1S7_GCCRD'.
APPEND value TO list.
value-key = '1S7_GCCGEN'.
value-text = '1S7_GCCGEN'.
APPEND value TO list.
value-key = '1S7_GCDRI'.
value-text = '1S7_GCDRI'.
APPEND value TO list.
value-key = '1S7_GCDJOB'.
value-text = '1S7_GCDJOB'.
APPEND value TO list.
value-key = '1S7_GCDASV'.
value-text = '1S7_GCDASV'.
APPEND value TO list.
value-key = '1S7_GCDASE'.
value-text = '1S7_GCDASE'.
APPEND value TO list.
value-key = '1S7_GCDOOC'.
value-text = '1S7_GCDOOC'.
APPEND value TO list.
value-key = '1S7_GCDOHD'.
value-text = '1S7_GCDOHD'.
APPEND value TO list.
value-key = '1S7_GCVER'.
value-text = '1S7_GCVER'.
APPEND value TO list.
value-key = '1S7_GCVJOB'.
value-text = '1S7_GCVJOB'.
APPEND value TO list.
value-key = '1S7_GCVASV'.
value-text = '1S7_GCVASV'.
APPEND value TO list.
value-key = '1S7_GCVASE'.
value-text = '1S7_GCVASE'.
APPEND value TO list.
value-key = '1S7_GCVOOC'.
value-text = '1S7_GCVOOC'.
APPEND value TO list.
value-key = '1S7_GCVOHD'. -
Using both at line-selection and at user-command
hellow friends ,
to use both at line-selection and at user-command in the same report.Hello,
U can do it like this.
AT LINE-SELECTION.
PERFORM at_line_selection.
AT USER-COMMAND.
PERFORM at_user_command.
FORM AT_LINE_SELECTION.
DATA: LV_CURSOR_FIELD(30).
DATA: LV_MATNR TYPE MATNR.
CLEAR H_UCOMM.
GET CURSOR FIELD LV_CURSOR_FIELD.
CASE LV_CURSOR_FIELD.
WHEN 'PSPNR'.
PERFORM LAGER_AN_PSP USING WA_MATNR-M1-RSNUM
WA_MATNR-M1-RSPOS.
WHEN 'PSPNR2'.
H_UCOMM = 'PSPNR2'.
IF NOT PSPNR2 IS INITIAL AND IT_VKBEL-VBELN CN '0123456789'.
PERFORM LAGER_AN_PSP_VKBEL USING IT_VKBEL
0
PSPNR2
H_MAKTX
' '. "keine Blindbuchung
ENDIF.
ENDCASE.
CASE SY-UCOMM.
WHEN 'BACK_NEW'.
PERFORM NEU_START USING 'X'.
WHEN 'EXIT'.
PERFORM NEU_START USING 'X'.
WHEN 'CANC'.
PERFORM NEU_START USING 'X'.
WHEN 'CHECK'.
PERFORM NEU_START USING SPACE.
ENDCASE.
Vasanth -
How to use a case statement in where clause
Hi All,
I have a requirement which is to bring all the claims that are created in the last month.So, i wrote a query something like this
select * from claims
where
(Month(ClaimOpenDate) = Month(Getdate())-1 and year(claimopendate) = year(getDate()))
which would give me any new claims created in last month of current year, but this condition fails if we are in the first month of a new year( lets say if we are in 2016 jan then month(getdate())-1 would be 0 and year(getdate()) would be 2016 so we dont
find any records where year is 2016 and month is 0 for claimopen).
So, i would like to use a case statament or something which can help me get around this one.
Can someone please help me with any suggestions?
ThanksHi Jason,
Thanks a lot for your help. This is what exactly i am looking for but i just gave a sample query above below is my original query
select
row_number() over (order by [ClaimNumber]) as DataElementName
,c.PolicyNumber as PolicyNum
, c.FirstName as CustNameF
,c.LastName as CustNameL
,c.PolicyForm as PolType
,'Homesite' as Company
,[ClaimNumber] as ClaimNum
,E.office as Ofc
,e.Supervisior_FullName as Team
, RIGHT(e.adjuster_Name ,LEN(e.adjuster_Name)- charindex(',' ,e.adjuster_Name)) as FORepF
, case when charindex(',' ,e.adjuster_Name) <> 0 then left(e.adjuster_Name,charindex(',' ,e.adjuster_Name)-1) else e.adjuster_Name end as FORepL
,e.AdjusterID as RepC -- not sure
,CONVERT ( varchar,c.LossDate ,101) as DOL
,convert (varchar,c.ClaimOpenDate,101) as DOR
,rtrim(c.Loss_State) as LossSt
,c.Loss_ZipCode as LossZIP
,c.Loss_City as LossCity
,c.LossType as FOL
,'' as PR
,'' as PRNum
,1 as FeaNum
,'HO' as FeaType
,case when rtrim(c.claimStatus)= 'Closed' then 'Closed' else 'Open' end as FeaStat
,'' as FeaOpen
,'' as FeaClosed
,s.PaymentIndemnityAmount as PaidAmt
,s.ReserveIndemnityAmount as Reserve
,'' as Sub
,'' as Sal
,'' as FeatOwnOfc
,e.Supervisior_FullName as FeatOwnTeam
,RIGHT(e.adjuster_Name ,LEN(e.adjuster_Name)- charindex(',' ,e.adjuster_Name)) as FeatOwnRepF
,case when charindex(',' ,e.adjuster_Name) <> 0 then left(e.adjuster_Name,charindex(',' ,e.adjuster_Name)-1) else e.adjuster_Name end as FeatOwnRepL
,e.AdjusterID as FeatOwnRepCode
,NULL AS Description --not sure
from [Stg].[HS_DW_RV_Claims] c
inner join [dbo].[Claims_Primary_Adjuster] a on a.CLAIM_NUMBER = c.ClaimNumber
inner join [dbo].[vw_Adjuster] e on e.adjuster_Name = a.primary_ADJUSTER
left outer join [Stg].[HS_DW_LossClaimSummary] s on c.ClaimKey=s.ClaimKey
where c.LoadSource = 'CMS'
and
(s.PaymentIndemnityAmount <>0 or s.PaymentExpenseAmount <>0)
and
ClaimOpenDate BETWEEN DATEADD(mm, DATEDIFF(mm, 0, CURRENT_TIMESTAMP) -1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, CURRENT_TIMESTAMP), 0)
UNION ALL
select
row_number() over (order by [ClaimNumber]) as DataElementName
,c.PolicyNumber as PolicyNum
, c.FirstName as CustNameF
,c.LastName as CustNameL
,c.PolicyForm as PolType
,'Homesite' as Company
,[ClaimNumber] as ClaimNum
,E.office as Ofc
,e.Supervisior_FullName as Team
, RIGHT(e.adjuster_Name ,LEN(e.adjuster_Name)- charindex(',' ,e.adjuster_Name)) as FORepF
, case when charindex(',' ,e.adjuster_Name) <> 0 then left(e.adjuster_Name,charindex(',' ,e.adjuster_Name)-1) else e.adjuster_Name end as FORepL
,e.AdjusterID as RepC -- not sure
,CONVERT ( varchar,c.LossDate ,101) as DOL
,convert (varchar,c.ClaimOpenDate,101) as DOR
,rtrim(c.Loss_State) as LossSt
,c.Loss_ZipCode as LossZIP
,c.Loss_City as LossCity
,c.LossType as FOL
,'' as PR
,'' as PRNum
,1 as FeaNum
,'HO' as FeaType
,case when rtrim(c.claimStatus)= 'Closed' then 'Closed' else 'Open' end as FeaStat
,'' as FeaOpen
,'' as FeaClosed
,s.PaymentIndemnityAmount as PaidAmt
,s.ReserveIndemnityAmount as Reserve
,'' as Sub
,'' as Sal
,'' as FeatOwnOfc
,e.Supervisior_FullName as FeatOwnTeam
,RIGHT(e.adjuster_Name ,LEN(e.adjuster_Name)- charindex(',' ,e.adjuster_Name)) as FeatOwnRepF
,case when charindex(',' ,e.adjuster_Name) <> 0 then left(e.adjuster_Name,charindex(',' ,e.adjuster_Name)-1) else e.adjuster_Name end as FeatOwnRepL
,e.AdjusterID as FeatOwnRepCode
,DESCRIPTION --not sure
from Stg.IG_Document D
inner join [Stg].[HS_DW_RV_Claims] c on D.PARENTREF = C.ClaimNumber
inner join [dbo].[Claims_Primary_Adjuster] a on a.CLAIM_NUMBER = c.ClaimNumber
inner join [dbo].[vw_Adjuster] e on e.adjuster_Name = a.primary_ADJUSTER
left outer join [Stg].[HS_DW_LossClaimSummary] s on c.ClaimKey=s.ClaimKey
where c.LoadSource = 'CMS'
and
DESCRIPTION like '%Denial Letter%'
and
ClaimOpenDate BETWEEN DATEADD(mm, DATEDIFF(mm, 0, CURRENT_TIMESTAMP) -1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, CURRENT_TIMESTAMP), 0)
So if i use your logic in the end for both the where clauses its been more than 10 minutes and the query is still running however if i use my old method it doesnt even take a second. Looks like its affecting the execution plan. Any suggestions to get around
this one please?
Thanks
Maybe you are looking for
-
Does the power cord offer surge protection?
I have a MacBook Pro and was wondering if the 60W MagSafe Power Adapter protects against power surges without being plugged into an additional surge protector?
-
LSMW issue while uploading the hiring data
Dear Experts, I am trying to create LSMW to upload hiring data for IT0000, IT0001, IT0002. Initially i tried with PA40 recording, but it was not selecting my respective action type. Then i tried with PA30 with external no. range, but still its not s
-
Hi,I cant get edge to work on my site from a seperate folder other then the root folder. I used target directory but dont seem to be able to get it to work. I can only get it to work if I put everything in the root folder. The problem I have with tha
-
[Solved] Where is ncurses-dev? (missing .h file)
Hi all, I'm trying to compile some code that uses ncursesw, however I don't have the <ncursesw/ncurses.h> file on my system. I'm new to Arch but I thought these files were normally provided by -dev packages, so ncurses-dev in this case. But I can't
-
Is it possible to use the AirPort Extreme wirelessly (without Ethernet cable)
Instead of plugging it directly into my Modem, can I set it up wirelessly?