'IF' statement in a select statment?
I have the following cursor in a package specification;
cursor c_sales_code is
select sales_condition||' MC '||sales_option
from sales;This will return something like: 'T300 MC 9'
MC means 'multiple choice' for when there are multiple options. Although, sales_option is sometimes null and in this case I just want 'T300' to be returned, not 'T300 MC'.
How would I go about doing this?
Thanks,
fakelvis
Use
CASE and DECODE
to add the functoinality of Conditional Statements in Your SQL Statements..
These two CASE / DECODE will help you to get your desired output
Similar Messages
-
Hi ,
what is the difference between,select single and
select upto one row .
In a select statment .
Thanks ,
shankar.According to SAP Performance course the SELECT UP TO 1 ROWS is faster than SELECT SINGLE because you are not
using all the primary key fields.
select single is a construct designed to read database records with primary key. In the absence of the primary key,
it might end up doing a sequential search, whereas the select up to 1 rows may assume that there is no primary key
supplied and will try to find most suitable index.
The best way to find out is through sql trace or runtime analysis.
Use "select up to 1 rows" only if you are sure that all the records returned will have the same value for the field(s)
you are interested in. If not, you will be reading only the first record which matches the criteria, but may be the
second or the third record has the value you are looking for.
The System test result showed that the variant Single * takes less time than Up to 1 rows as there is an additional
level for COUNT STOP KEY for SELECT ENDSELECT UP TO 1 ROWS.
The 'SELECT SINGLE' statement selects the first row in the database that it finds that fulfils the 'WHERE' clause
If this results in multiple records then only the first one will be returned and therefore may not be unique.
Mainly: to read data from
The 'SELECT .... UP TO 1 ROWS' statement is subtly different. The database selects all of the relevant records that
are defined by the WHERE clause, applies any aggregate, ordering or grouping functions to them and then returns
the first record of the result set.
Mainly: to check if entries exist.
You can refer to the below link..
http://www.sap-img.com/abap/difference-between-select-single-and-select-upto-one-rows.htm -
Select statment - fill internal table
Hi,
I have following situation:
TYPES: BEGIN OF q_data,
i_lqua LIKE lqua,
v_xxx(20) type c,
END OF q_data.
DATA: a_data TYPE STANDARD TABLE OF q_data.
Now I would write a select statment and fill the table a_data.
select lqua~matnr lqua~werks... from lqua inner join mch1 into (i_lqua-matnr, i_lqua-werks.....)...
Is it possible to write a statement without writing the whole structure (all the names of columns) of lqua in the SQL-statement (lquamatnr lquawerks lqua~........)?
Thanks
Michael1. you can write that but i think you have to write that in SELECT ...ENDSELECT.
select lquamatnr lquawerks... from lqua inner join mch1 into (i_lqua-matnr, i_lqua-werks.....
append i_lqua.
endselect.
2. OR you can use INTO CORRESPONDING FIELDS OF TABLE
select lquamatnr lquawerks... from lqua inner join mch1 into corresponding fields of table i_lqua. -
Using distinct and orderby in the select statment
Hi All,
Can anyone tell me what is the purpose of using distinct and orderby in the select statment.Hi,
Using the distinct function with more than one column yields some substantial results. SQL will return the rows with distinct or unique combinations of those columns. Assume this same employee table has another column including the salary of each employee. With the use of the distinct function we can pull a list of unique job titles - salaries.
SQL Code:
SELECT DISTINCT job_titles, salary FROM employees;
SQL has returned all the rows with unique combinations of job titles and salaries. Any duplicate combinations of job titles and salaries will be ignored. For example if we had two CEOs in the table making the same salary each year, only one row would be returned but if we had two CEOs with different salaries, both rows would be returned.
Order by
The SQL ORDER BY clause comes in handy when you want to sort your SQL result sets by some column(s). For example if you want to select all the persons from the already familiar Customers table and order the result by date of birth, you will use the following statement:
SELECT * FROM Customers
ORDER BY DOB
As you can see the rows are sorted in ascending order by the DOB column, but what if you want to sort them in descending order? To do that you will have to add the DESC SQL keyword after your SQL ORDER BY clause:
SELECT * FROM Customers
ORDER BY DOB DESC
If you don't specify how to order your rows, alphabetically or reverse, than the result set is ordered alphabetically, hence the following to SQL expressions produce the same result:
SELECT * FROM Customers
ORDER BY DOB
SELECT * FROM Customers
ORDER BY DOB ASC
You can sort your result set by more than one column by specifying those columns in the SQL ORDER BY list. The following SQL expression will order by DOB and LastName:
SELECT * FROM Customers
ORDER BY DOB, LastName
if its useful reward points -
Select statment - where clause
Hello experts,
I want to write a select statment,
e.g.
select * from pa0001 where ename like '%Rahul%'.
so this stamemt will give me all DB rows in which ename contains Rahul but i also want rows those are having rahul or rAhul or raHul or RAhul or RAHul or RaHul like wise....
can u plz help me on this ???Hi
Find the below code which may be useful for your requirement
ranges:r_sel for lfa1-name1.
data:v_name(5) type c value 'laxmi'.
data:len type i,
v_num type i,
v_num1 type i,
v_num2 type i,
v_name1(5) type c,
v_name2(5) type c,
v_name_final(7) type c,
v_char type c.
len = strlen( v_name ).
clear:v_name1,v_name2,v_name_final,v_num,v_num1,v_num2.
v_num1 = len.
do len times.
v_num1 = v_num1 - 1.
v_char = v_name+v_num(1).
v_num2 = v_num.
v_num = v_num + 1.
if v_num1 is initial.
clear:v_name1.
else.
v_name1 = v_name+v_num(v_num1).
endif.
if v_num2 is not initial.
v_name2 = v_name+0(v_num2).
endif.
translate v_char to upper case.
concatenate '' v_name2 v_char v_name1 '' into v_name_final.
r_sel-option = 'CP'.
r_sel-sign = 'I'.
r_sel-low = v_name_final.
clear:r_sel-high.
append r_sel.
translate v_char to lower case.
concatenate '' v_name2 v_char v_name1 '' into v_name_final.
r_sel-option = 'CP'.
r_sel-sign = 'I'.
r_sel-low = v_name_final.
clear:r_sel-high.
append r_sel.
enddo.
Use range parameter in your select statement.
Regards
Sripal -
Problem in select statment & loop of itab.
Hi all,
I am having on ITAB1 for, ex which is having five line items or more .
iam also using select statment SINGLE statment for 7 times ,to select values for
different data base table.
for ex,
loop at itab.
1---> SELECT SINGLE Z_CTRY_ORIG INTO LS_PSHDESN-Z_CTRY_ORIG FROM ZLE_PART_MST
WHERE WERKS = ITAB1-LGNUM
AND MATNR = ITAB1-MATNR .
2---
3---
4---
endloop
i want to remove from the loop statment and i have to select the datas ..
can any one sugesset some possible ways....
regards
veerahi,
Solution:
Never use select single in loop at itab!! for that :
Solution 1:
say ur main table is ITAB and rferring this u want to select data from other tables.
SELECT SINGLE Z_CTRY_ORIG INTO LS_PSHDESN-Z_CTRY_ORIG FROM ZLE_PART_MST
into table itab2
FOR ALL ENTRIES IN ITAB
WHERE WERKS = ITAB-LGNUM
AND MATNR = ITAB-MATNR.
With this what will hapeen , u will get all records in itab2 which u can update itab1(master) using loop.
solution 2:
Instead of all this use JOINs in select statement properly and u can fetch data in one shot this will reduce database load as well as abap load ( More than 3 joins in SELECT stmt are not recommeded but can be used)
I believe this is perfect solution if and only if u are giving joins on KEY fields only. Same is applied for wherer clause.
Hope this will help u, if not revert.
Jogdand M B -
How does "SELECT" statment work?
Hi,
Correct me if I'm wrong.
Data selected by SELECT statement (without ORDER BY) is unordered and sequence of selected lines may differ every time you execute the same SELECT.
My problem is that data on a production system has been always selected ordered ( without ORDER BY) and suddenly it changes and the rows of a result set are unordered.
It's also strange for me that it works differently on a test system and data is selected ordered ( the code is the same on both systems ).
Two questions:
1. How is it possible that data was always selected ordered? (the only answer which comes to my head is "LUCK" )
2. What has happened that data is now selected unordered? (and works as SELECT statment should work by definition)
Thanks for any ideas,
MarioHello,
I see there is an equality 3-3 in the match here, between
1) those who are for "it's ordered" (Rodrigo Ariel G..., Danish2285, pavankumar.g)
2) and those "it's not ordered" (Diwakar Aggarwal, Keshav.T, Matt).
So I'd like to play too :-D and my answer is "it's not ordered" (with Diwakar Aggarwal, Keshav.T, Matt).
now 3-4
My advice is: always trust the SAP documentation when it's said explicitly (I'm aware that the arguments or context are sometimes missing, so a confirmation is then needed).
You'll find it also in the wikipedia for SQL article (http://en.wikipedia.org/wiki/SQL#Queries): "The ORDER BY clause identifies which columns are used to sort the resulting data, and in which direction they should be sorted (options are ascending or descending). Without an ORDER BY clause, the order of rows returned by an SQL query is undefined."
Oracle SQL Reference, in the Query Optimizer section (http://download.oracle.com/docs/cd/B14117_01/server.101/b10752/optimops.htm#35891) : "If data must be sorted by order, then use the ORDER BY clause, and do not rely on an index. If an index can be used to satisfy an ORDER BY clause, then the optimizer uses this option and avoids a sort."
In fact, this is logic when we know how RDBMS are built, all this is about the selection of the access path to get the data (that we see with the explain plan, the path depends especially on what the database contains, that is different between test and production), the faster way to do things (an ordering is not always required, so why the RDBMS would spend time to organize it)
Don't we have this question in the Forum's FAQ by the way?
Sandra -
hi,
the select statment is
SELECT SINGLE * FROM edidc WHERE docnum = l_docnum AND direct = '1' AND status = '3' AND mestyp = 'OILSHL'.
there is an entry in the table edidc for the mentioned conditions.
but it is returning sy-subrc = 4.
please check what is the wrong in the statement and provide me the solution for that.
it is very urgent......
thanks in advance....<b>please use the below program for getting it</b> ....
REPORT ZTES_12 .
TABLES : edidc .
SELECT-OPTIONS : l_docnum FOR edidc-docnum .
DATA : ITAB TYPE TABLE OF edidc ,
ITAB_WA LIKE edidc .
SELECT * FROM edidc INTO TABLE ITAB WHERE docnum IN l_docnum AND
direct = '1'
AND status = '29' AND mestyp = 'MATQM'.
LOOP AT ITAB INTO ITAB_WA .
WRITE / : ITAB_WA-docnum .
ENDLOOP.
reward points if it is usefull .....
Girish -
How can I use an IF statement in the SELECT
Hi People,
I have a procedure called ENQUEUE_PROC which takes 3 parameters.
and I am trying to use an if statement in the select. I appreciate the help with this task.
here is my code.
Please have a look at my Select statement. What I have does not compile, however it might give you an idea of what i need.
PROCEDURE ENQUEUE_PROC(P_SUBMISSION_ID NUMBER,
P_EVENT VARCHAR2,
CASE_TYPE_CODE NUMBER;
) AS
XMLDATA XMLTYPE;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
SELECT
XMLELEMENT("caseFileEvent", XMLATTRIBUTES('http://www.ussc.gov/soa/casefile/event/types' AS "xmlns",
'http://www.ussc.gov/soa/casefile/event/types' AS "xmlns:ns0"),
XMLELEMENT("caseFileUploadEvent", XMLATTRIBUTES('http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi",
'http://www.ussc.gov/soa/casefile/event/types ../xsd/Case_META.xsd' AS "xsi:schemaLocation",
'http://www.ussc.gov/soa/casefile/event/types' AS "xmlns"),
XMLELEMENT("taskEvent", P_EVENT), --eg - 'SUBMIT', 'REJECT', 'RESUBMIT'
XMLELEMENT("defendentDetails",
XMLELEMENT("sentensingDate", SMD.SENT_VIO_DATE),
XMLELEMENT("personDetails",
// Here is where I want my IF statement, *********************************
IF CASE_TYPE_CODE = 10 THEN
XMLELEMENT("personNameDetails",
XMLELEMENT("firstName", SMD.FIRST_NAME),
XMLELEMENT("middleName", SMD.MIDDLE_NAME),
XMLELEMENT("lastName", SMD.LAST_NAME)
), -- personNameDetails
ELSE
XMLELEMENT("personNameDetails",
XMLELEMENT("corpname", SMD.CORPNAME),
), -- personNameDetails
XMLELEMENT("dateOfBirth", SMD.BIRTH_DATE)
) -- personDetails
), -- defendentDetails
XMLELEMENT("documentStatusDetails",
XMLELEMENT("otherStatus",
XMLELEMENT("intCode", NULL),
XMLELEMENT("description", NULL)
) -- otherStatus
), -- documentStatusDetails
XMLELEMENT("uploadOtherDetails",
XMLELEMENT("submissionId", SUB.SUBMISSION_ID),
XMLELEMENT("submissionSessionId", SUB.SUB_SESSION_ID),
XMLELEMENT("submissionMethod",
XMLELEMENT("intCode", SUB.SUB_MTHD_CODE),
XMLELEMENT("description", SM.DESCRIP)
), -- submissionMethod
XMLELEMENT("submissionReason",
XMLELEMENT("intCode", SUB.SUB_TYPE_CODE),
XMLELEMENT("description", SR.DESCRIP)
), -- submissionReason
XMLELEMENT("district",
XMLELEMENT("intCode", SMD.DIST_ID),
XMLELEMENT("description", D.DISTRICT_NAME)
), -- district
XMLELEMENT("caseFileType",
XMLELEMENT("intCode", SUB.CASE_TYPE_CODE),
XMLELEMENT("description", C.DESCRIP)
), -- caseFileType
XMLELEMENT("primaryDocketInfo",
XMLELEMENT("yearYY", SUBSTR(SMD.DOCKET, 1, 2)),
XMLELEMENT("id", SUBSTR(SMD.DOCKET, 3, 7)),
XMLELEMENT("defendentNumber", SMD.DEF_NUM)
), -- primaryDocketInfo
XMLELEMENT("PACTSId", SMD.PACTS_ID), -- PACTSId
XMLELEMENT("AOJudgeId",
XMLELEMENT("intCode", SMD.AO_JUDGE_ID),
XMLELEMENT("description", J.LAST_NAME || ', ' || J.FIRST_NAME || ', ' || J.MIDDLE_NAME)
), -- AOJudgeId
XMLELEMENT("missingCasefile", SUB.MISSING_CASE), -- missingCasefile
XMLELEMENT("creator",
XMLELEMENT("firstName", NULL),
XMLELEMENT("lastName", NULL),
XMLELEMENT("email", SUB.CREATOR_ID),
XMLELEMENT("actionDate", REGEXP_REPLACE( TO_CHAR(SUB.CREATE_TIME, 'YYYY-MM-DD"T"HH24:MI:SS.FFTZR'), '...(......)$', '\1'))
), -- creator
XMLELEMENT("lastModifier",
XMLELEMENT("firstName", NULL),
XMLELEMENT("lastName", NULL),
XMLELEMENT("email", H.USER_ID),
XMLELEMENT("actionDate", TO_CHAR(H.ACTION_DATE, 'YYYY-MM-DD"T"HH24:MI:SS".000-05:00"'))
) -- lastModifier
) -- uploadOtherDetails
) -- caseFileUploadEvent
) -- caseFileEvent
INTO XMLDATA
FROM USSC_CASES.SUBMISSION SUB,
USSC_CASES.SUBMISSION_METADATA SMD,
USSC_CASES.CASE_HISTORY H,
LOOKUP.CASE_SUB_MTHD SM,
LOOKUP.CASE_SUB_TYPE SR,
LOOKUP.DISTRICTS D,
LOOKUP.JUDGES J,
LOOKUP.CASE_TYPES C
WHERE SUB.SUBMISSION_ID = SMD.SUBMISSION_ID
AND SUB.SUBMISSION_ID = H.SUBMISSION_ID
AND SUB.SUB_MTHD_CODE = SM.SUBMTHD_CODE
AND SUB.SUB_TYPE_CODE = SR.SUBTYPE_CODE
AND SUB.CASE_TYPE_CODE = C.CASE_TYPE_CODE
AND SMD.DIST_ID = D.USSC_DISTRICT_ID
AND SMD.AO_JUDGE_ID = J.AO_JUDGE_ID
AND H.ACTION_DATE IN (SELECT MAX(A.ACTION_DATE)
FROM USSC_CASES.CASE_HISTORY A
WHERE A.SUBMISSION_ID = P_SUBMISSION_ID)
AND SUB.SUBMISSION_ID = P_SUBMISSION_ID;
--dbms_output.put_line('queue start '|| xmldata.getclobval());
--insert into test1 values(xmldata);
message := SYS.AQ$_JMS_TEXT_MESSAGE.construct;
message.set_text(xmldata.getStringVal());
DBMS_AQ.ENQUEUE(queue_name => 'case_file_queue', -- aqadm.cases_queue
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END ENQUEUE_PROC;thanks for the help,
I believe I almost got it to compilw, however I am getting Error(29,19): PL/SQL: ORA-00918: column ambiguously defined.
Of course CASE_TYPE_CODE is ambiguously because its passed in, is there a way around this.
Here is what i have so far.
PROCEDURE ENQUEUE_PROC(P_SUBMISSION_ID NUMBER,
P_EVENT VARCHAR2,
CASE_TYPE_CODE NUMBER // passed in field
) AS
XMLDATA XMLTYPE;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
SELECT
XMLELEMENT("caseFileEvent", XMLATTRIBUTES('http://www.ussc.gov/soa/casefile/event/types' AS "xmlns",
'http://www.ussc.gov/soa/casefile/event/types' AS "xmlns:ns0"),
XMLELEMENT("caseFileUploadEvent", XMLATTRIBUTES('http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi",
'http://www.ussc.gov/soa/casefile/event/types ../xsd/Case_META.xsd' AS "xsi:schemaLocation",
'http://www.ussc.gov/soa/casefile/event/types' AS "xmlns"),
XMLELEMENT("taskEvent", P_EVENT), --eg - 'SUBMIT', 'REJECT', 'RESUBMIT'
XMLELEMENT("defendentDetails",
XMLELEMENT("sentensingDate", SMD.SENT_VIO_DATE),
CASE
WHEN CASE_TYPE_CODE = 10 THEN
XMLELEMENT("personDetails",
XMLELEMENT("personNameDetails",
XMLELEMENT("firstName", SMD.FIRST_NAME),
XMLELEMENT("middleName", SMD.MIDDLE_NAME),
XMLELEMENT("lastName", SMD.LAST_NAME)
), -- personNameDetails
XMLELEMENT("dateOfBirth", SMD.BIRTH_DATE)
) -- personDetails
ELSE
XMLELEMENT("corporationDetails",
XMLELEMENT("organizationName", SMD.CORP_NAME)
) -- corporationDetails
END
), -- defendentDetails
XMLELEMENT("documentStatusDetails",
XMLELEMENT("otherStatus",
XMLELEMENT("intCode", NULL),
XMLELEMENT("description", NULL)
) -- otherStatus
), -- documentStatusDetails
XMLELEMENT("uploadOtherDetails",
XMLELEMENT("submissionId", SUB.SUBMISSION_ID),
XMLELEMENT("submissionSessionId", SUB.SUB_SESSION_ID),
XMLELEMENT("submissionMethod",
XMLELEMENT("intCode", SUB.SUB_MTHD_CODE),
XMLELEMENT("description", SM.DESCRIP)
), -- submissionMethod
XMLELEMENT("submissionReason",
XMLELEMENT("intCode", SUB.SUB_TYPE_CODE),
XMLELEMENT("description", SR.DESCRIP)
), -- submissionReason
XMLELEMENT("district",
XMLELEMENT("intCode", SMD.DIST_ID),
XMLELEMENT("description", D.DISTRICT_NAME)
), -- district
XMLELEMENT("caseFileType",
XMLELEMENT("intCode", SUB.CASE_TYPE_CODE),
XMLELEMENT("description", C.DESCRIP)
), -- caseFileType
XMLELEMENT("primaryDocketInfo",
XMLELEMENT("yearYY", SUBSTR(SMD.DOCKET, 1, 2)),
XMLELEMENT("id", SUBSTR(SMD.DOCKET, 3, 7)),
XMLELEMENT("defendentNumber", SMD.DEF_NUM)
), -- primaryDocketInfo
XMLELEMENT("PACTSId", SMD.PACTS_ID), -- PACTSId
XMLELEMENT("AOJudgeId",
XMLELEMENT("intCode", SMD.AO_JUDGE_ID),
XMLELEMENT("description", J.LAST_NAME || ', ' || J.FIRST_NAME || ', ' || J.MIDDLE_NAME)
), -- AOJudgeId
XMLELEMENT("missingCasefile", SUB.MISSING_CASE), -- missingCasefile
XMLELEMENT("creator",
XMLELEMENT("firstName", NULL),
XMLELEMENT("lastName", NULL),
XMLELEMENT("email", SUB.CREATOR_ID),
XMLELEMENT("actionDate", REGEXP_REPLACE( TO_CHAR(SUB.CREATE_TIME, 'YYYY-MM-DD"T"HH24:MI:SS.FFTZR'), '...(......)$', '\1'))
), -- creator
XMLELEMENT("lastModifier",
XMLELEMENT("firstName", NULL),
XMLELEMENT("lastName", NULL),
XMLELEMENT("email", H.USER_ID),
XMLELEMENT("actionDate", TO_CHAR(H.ACTION_DATE, 'YYYY-MM-DD"T"HH24:MI:SS".000-05:00"'))
) -- lastModifier
) -- uploadOtherDetails
) -- caseFileUploadEvent
) -- caseFileEvent
INTO XMLDATA
FROM USSC_CASES.SUBMISSION SUB,
USSC_CASES.SUBMISSION_METADATA SMD,
USSC_CASES.CASE_HISTORY H,
LOOKUP.CASE_SUB_MTHD SM,
LOOKUP.CASE_SUB_TYPE SR,
LOOKUP.DISTRICTS D,
LOOKUP.JUDGES J,
LOOKUP.CASE_TYPES C
WHERE SUB.SUBMISSION_ID = SMD.SUBMISSION_ID
AND SUB.SUBMISSION_ID = H.SUBMISSION_ID
AND SUB.SUB_MTHD_CODE = SM.SUBMTHD_CODE
AND SUB.SUB_TYPE_CODE = SR.SUBTYPE_CODE
AND SUB.CASE_TYPE_CODE = C.CASE_TYPE_CODE
AND SMD.DIST_ID = D.USSC_DISTRICT_ID
AND SMD.AO_JUDGE_ID = J.AO_JUDGE_ID
AND H.ACTION_DATE IN (SELECT MAX(A.ACTION_DATE)
FROM USSC_CASES.CASE_HISTORY A
WHERE A.SUBMISSION_ID = P_SUBMISSION_ID)
AND SUB.SUBMISSION_ID = P_SUBMISSION_ID;
--dbms_output.put_line('queue start '|| xmldata.getclobval());
--insert into test1 values(xmldata);
message := SYS.AQ$_JMS_TEXT_MESSAGE.construct;
message.set_text(xmldata.getStringVal());
DBMS_AQ.ENQUEUE(queue_name => 'case_file_queue', -- aqadm.cases_queue
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END ENQUEUE_PROC;Edited by: Rooney on Jan 31, 2012 1:55 PM -
Performace problem in a select statment how to imporve the performance
fist select statment
SELECT a~extno
a~guid_lclic " for next select
e~ctsim
e~ctsex
*revised spec 3rd
f~guid_pobj
f~amnt_flt
f~amcur
f~guid_mobj
e~srvll "pk
e~ctsty "PK
e~lgreg "PK
INTO TABLE gt_sagmeld
FROM /SAPSLL/LCLIC as a
INNER JOIN /sapsll/tlegsv as e on elgreg = algreg
* revised spec 3rd
inner join /sapsll/legcon as f on fguid_lclic = aguid_lclic " for ccngn1 selection
inner join /sapsll/corcts as g on gguid_pobj = fguid_pobj
where a~extno in s_extno.
sort gt_sagmeld by guid_lclic guid_pobj.
lgreg ctsty srvll
delete adjacent duplicates from gt_sagmeld comparing guid_lclic guid_pobj.
it selects about 20 lakh records
belos select statment whichs is taking time as it is based on the entreis of gt_sagmeld
select /sapsll/corpar~guid_mobj
/sapsll/corpar~PAFCT
but000~bpext
but000~partner
/sapsll/corpar~parno
into table gt_but001
from /sapsll/corpar
INNER join but000 on but000partner = /sapsll/corparparno
for all entries in gt_sagmeld
where /sapsll/corpar~guid_mobj = gt_sagmeld-guid_mobj
and /sapsll/corpar~PAFCT = 'SH'.
SELECT /sapsll/cuit~guid_cuit " PK
/sapsll/cuit~QUANT_FLT " to be displayed
/sapsll/cuit~QUAUM " to be displayed
/sapsll/cuit~RPTDT " to be displayed
/sapsll/cuhd~guid_cuhd " next select
/sapsll/cuit~guid_pr " next select
INTO table gt_sapsllcuit
FROM /sapsll/cuit
inner join /sapsll/cuhd on /sapsll/cuitguid_cuhd = /sapsll/cuhdguid_cuhd
FOR all entries in gt_sagmeld
WHERE /sapsll/cuit~guid_cuit = gt_sagmeld-guid_pobj.
Delete adjacent duplicates from gt_sapsllcuit[].
if not gt_sapsllcuit[] is initial.hi navenet
that didnt worked
we need to try ur range options
but not sure what you told in the last mail as not clear with range can u pls eloboragte more i am pasting the full code here
SELECT a~extno
a~guid_lclic " for next select but000
e~ctsim
e~ctsex
e~srvll
e~ctsty
e~lgreg
INTO TABLE gt_sagmeld
FROM /SAPSLL/LCLIC as a
INNER JOIN /sapsll/tlegsv as e on elgreg = algreg
where a~extno in s_extno.
sort gt_sagmeld by guid_lclic.
delete adjacent duplicates from gt_sagmeld comparing all fields.
IF not gt_sagmeld[] is initial.
SELECT /sapsll/legcon~guid_lclic
/sapsll/legcon~guid_pobj
/sapsll/legcon~amnt_flt
/sapsll/legcon~amcur
but000~bpext
*revised spec
/sapsll/corpar~PAFCT
/sapsll/legcon~guid_mobj
/sapsll/cuit~guid_cuit
INTO TABLE gt_but000
FROM /SAPSLL/LEGCON
for all entries in gt_sagmeld
where /SAPSLL/legcon~guid_lclic = gt_sagmeld-guid_lclic.
IF NOT GT_BUT000[] IS INITIAL.
sort gt_but000 by guid_mobj.
delete adjacent duplicates from gt_but000 comparing guid_mobj.
select /sapsll/corpar~guid_mobj
/sapsll/corpar~PAFCT
/sapsll/corpar~parno
into table gt_but001
from /sapsll/corpar
for all entries in gt_but000
where /sapsll/corpar~guid_mobj = gt_but000-guid_mobj.
and /sapsll/corpar~PAFCT = 'SH'.
DELETE gt_but001 where PAFCT <> 'SH'.
*sort gt_corpar by parno.
*delete adjacent duplicates from gt_corpar comparing parno.
*select gd000~partner
gd000~bpext
from gd000 into table gt_but001
for all entries in gt_corpar
where gd000~partner = gt_corpar-parno.
my ultimat aim is to select bpext from gd000
can u please explain how to use ranges here and what is the singnificance and how ill i read the data from the final table if we use ranges
regards
Nishant -
What happen if i use controll break statement in between select & endselect
Hi all,
what happen if i use controll break statement in between select & endselect ?
Thanks in Advance
KRHi for reference u can go through this code example
data:
fs_tab like sflight.
data:
t_tab like standard table of fs_tab.
select * from sflight into table t_tab.
loop at t_tab into fs_tab.
write: / fs_tab-carrid.
endloop.
refresh t_tab.
clear fs_tab.
select * from sflight into fs_tab.
at new fs_tab-carrid.
append fs_tab to t_tab.
endat.
endselect. -
Commit for every 1000 records in Insert into select statment
Hi I've the following INSERT into SELECT statement .
The SELECT statement (which has joins ) has around 6 crores fo data . I need to insert that data into another table.
Please suggest me the best way to do that .
I'm using the INSERT into SELECT statement , but i want to use commit statement for every 1000 records .
How can i achieve this ..
insert into emp_dept_master
select e.ename ,d.dname ,e.empno ,e.empno ,e.sal
from emp e , dept d
where e.deptno = d.deptno ------ how to use commit for every 1000 records .ThanksSmile wrote:
Hi I've the following INSERT into SELECT statement .
The SELECT statement (which has joins ) has around 6 crores fo data . I need to insert that data into another table.Does the another table already have records or its empty?
If its empty then you can drop it and create it as
create your_another_table
as
<your select statement that return 60000000 records>
Please suggest me the best way to do that .
I'm using the INSERT into SELECT statement , but i want to use commit statement for every 1000 records .That is not the best way. Frequent commit may lead to ORA-1555 error
[url http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:275215756923]A nice artical from ASKTOM on this one
How can i achieve this ..
insert into emp_dept_master
select e.ename ,d.dname ,e.empno ,e.empno ,e.sal
from emp e , dept d
where e.deptno = d.deptno ------ how to use commit for every 1000 records .
It depends on the reason behind you wanting to split your transaction into small chunks. Most of the time there is no good reason for that.
If you are tying to imporve performance by doing so then you are wrong it will only degrade the performance.
To improve the performance you can use APPEND hint in insert, you can try PARALLEL DML and If you are in 11g and above you can use [url http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_parallel_ex.htm#CHDIJACH]DBMS_PARALLEL_EXECUTE to break your insert into chunks and run it in parallel.
So if you can tell the actual objective we could offer some help. -
Doubt on SAMPLE clause in SELECT statment
Hi all,
I am having table with rows of 41. I issued a statement like this
select * from TABLE_NAME SAMPLE(10);
and it selected 3 rows (it is varying) . Everytime, i issued this statement, it is
fetching different number of rows.
Can anybody please explain what is the basis for it and what is the best
option to select rows randomly.
Thanks in advance,
PalThanks for your reply.
Everytime, the selected rows are different sometimes only one record, sometimes
three, sometimes 7 recoreds, and sometimes 4 records like that.
So i didnot understand what is going on inside of this query.
Thanks,
Pal -
Trouble setting the session state of a select item.
Hi,
I have a requirement whereby I need to change the session state of a select list item in my form without the need to submit. I am using Application Express 4.1.0.00.32. I thought this would be straight forward using a dynamic action or javascript and calling an on demand process for example.
P1_MY_SELECT onchange="set_option();"
function set_option() {
var l_option=$f_SelectValue('P1_MY_SELECT');
alert( 'My new value is ' + l_option );
// ON DEMAND Set the new session state value
var lRequest = new apex.ajax.ondemand
('SET_P1_MY_SELECT',function()
{ /* start the return function */
var l_s = p.readyState;
if(l_s == 1||l_s == 2||l_s == 3)
else if(l_s == 4)
{ gReturn = p.responseText;
(gReturn)?json_SetItems(gReturn):null;
else{return false;}
/* end the return function */
lRequest.ajax.addParam('x01', l_option );
lRequest._get()
My on demand application process
DECLARE
l_options varchar2(2000) := wwv_flow.g_x01;
BEGIN
APEX_UTIL.SET_SESSION_STATE('P1_MY_SELECT',l_options);
apex_util.json_from_items('P1_MY_SELECT');
END;
Is there a better method to set the session state of my P1_MY_SELECT other than what I am doing as above or can you tell me why the session state of P1_MY_SELECT is not changed?
Thanks.
Edited by: 968358 on 01-Nov-2012 08:40if you are on 4.1 why don't you use a dynamic action instead of writing the code again?
create a dynamic action like this
Event: Change
Source Type: Item
Item: P1_MY_SELECT
True Action:
=========
Action: Execute Plsql Code
Plsql Code: null;
Page Items to Submit: P1_MY_SELECT
Page Items to Return: P1_MY_SELECT (this is optional)
http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21674/advnc_dynamic_actions.htm#HTMDB27020 -
Hi,
I am devloping Query with the table DBERCHZ1
it having two fields
V_ ABRMENGE value 456
N_ ABRMENGE value 0.67899
Here i want to print as 456.67899 with one select statment.
is any way to sum in select statment.
ThanksHi,
I have just given a code snippet similar to your requirement.
DATA: average TYPE p DECIMALS 2,
sum TYPE p DECIMALS 2.
SELECT AVG( luggweight ) SUM( luggweight )
INTO (average, sum)
FROM sbook.
WRITE: / 'Average:', average,
/ 'Sum :', sum.
Just replace with your variables and let me know if it works.
Thanks,
Harini
Maybe you are looking for
-
Hi Gurus, We have just executed the balance carry forward to 2011 ( AP, AR, GL ) AP and AR - F.07 GL - FAGLGVTR But after we have executed the balance carryforward, we can no longer view the actual line items of 2010 in some reports like KE5Z. It say
-
Error 10810 when running applescript remotely
So "final" product here. I'm no applescripter so my code is probably inefficient. As such I keep running into a -10810 error and from my googling and research I think it's a runaway process (or a few of them) created by this script. I run it through
-
Restricting authobject I_QMEL for Quality notifications and HR PCRs
Hello, We have encountered an role conflict when the authorization object I_QMEL is used both for Quality notification and HR PCR access on the portal. Here is the scenario. Quality Administrator has I_QMEL for: - notification type X - transaction I
-
Streaming Netflix on our Samsung tv.
We were sold a Samsung wireless LAN adapter by a Best Buy associate which we were told would allow us to stream Netflix on our UN46C6300SF LED tv. When we tried we were unsuccessful. We chatted with Samsung support and were told that we couldn't stre
-
i lost my mac book, someone steal it from my locker, is there any possibility to trace it?