Help need in writing a logic/proc
SELECT TRACK_NUM, MIN(sub_account) AS START_KEY, MAX(sub_account) AS END_KEY
FROM (
SELECT to_number(sub_account) as sub_account,
RANK() OVER (PARTITION BY sub_account
ORDER BY ROWNUM) AS ROW_INSTANCE,
NTILE( 20 ) OVER (ORDER BY sub_account) AS TRACK_NUM
FROM STG_SUB_MASTER_MONTH_HISTORY)
WHERE ROW_INSTANCE = 1
GROUP BY TRACK_NUM ;The above sql gives result set like
TRACK_NUM START_KEY END_KEY
1 200000028 2095931954
2 2095932501 5067004214
3 5067004346 1.1092E+10
4 1.1092E+10 2.1028E+10
5 2.1028E+10 2.3078E+10
6 2.3078E+10 2.9010E+10
7 2.9010E+10 3.1089E+10
8 3.1089E+10 3.3051E+10
9 3.3051E+10 3.4081E+10
10 3.4081E+10 3.7014E+10
11 3.7014E+10 3.7067E+10
12 3.7067E+10 4.1006E+10
13 4.1006E+10 4.5040E+10
14 4.5040E+10 4.9047E+10
15 4.9047E+10 5.2030E+10
16 5.2030E+10 6.4578E+10
17 6.4578E+10 7.1001E+10
18 7.1001E+10 7.1035E+10
19 7.1035E+10 7.2048E+10
20 7.2048E+10 7.9553E+10Now i have to pass these start key and end key to my below code
Insert into /*+ Parallel (A,8) append */ Sub_phone_Rateplan_fss A
SELECT /* Index(Sub, IDX_Sub_hist)*/
sub.MARKET_CODE ,
sub.SUB_CTYPE ,
phn.PH_BASIC_SRV ,
sub.MONTH_ID ,
sub.SUB_ACCOUNT ,
sub.SUB_LAST_NAME ,
sub.SUB_FIRST_NAME ,
SUB.WS_ENTRY_DATE AS SUB_WS_ENTRY_DATE ,
sub.WS_DISC_DATE ,
sub.SUB_DISC_REASON ,
sub.SUB_BILL_CYCLE ,
sub.SUB_MUN_CODE ,
sub.SUB_30DAY_BAL ,
sub.SUB_60DAY_BAL ,
sub.SUB_90DAY_BAL ,
sub.SUB_OVR90_BAL ,
sub.SUB_WRTOFF_AMT ,
sub.SUB_BALANCE_DUE ,
sub.SUB_CURRENT_BAL ,
sub.SUB_STATUS,
phn.PH_MOBIL_ID ,
phn.WS_ESN_UN ,
phn.WS_START_DATE ,
phn.WS_STOP_DATE ,
PHN.WS_ENTRY_DATE AS PHN_WS_ENTRY_DATE ,
phn.PH_STATUS ,
phn.PH_FEAT_CODES ,
phn.PH_MODEL ,
phn.CRICKET_LOCATION_ID_KEY ,
phn.FEATURE_SET_ID
-- NTILE(10) OVER(PARTITION BY SUB.SUB_ACCOUNT ORDER BY SUB.SUB_ACCOUNT) AS NT
FROM STG_SUB_MASTER_MONTH_HISTORY SUB, STG_PHN_MASTER_MONTH_HISTORY PHN
WHERE
--SUB.MONTH_ID = PHN.MONTH_ID
SUB.SUB_ACCOUNT = PHN.PH_ACCOUNT
And to_number(SUB.Sub_Account) BETWEEN @startkey and @endkey;
Commit;can anyone help me getting the logic or the procedure since i have to use the result set provided above by the first query.
Message was edited by:
Vakeel
Hi, Vakeel,
The usual way of using the results of one query in another is to join the two queries. Sometimes it's easier to do a corellated sub-query instead. I can't tell which is the best way for you, or exactly how to do it, because I don't understand exactly what results you want.
Please post a few rows of sample data and the results you want to get from that data. Simplify as much as possible. For example, post a query that uses NTILE (4) instead if NTILE (20). (If you know how to solve one, you can solve the other.)
Another example: only select a couple of columns in the second query.
Similar Messages
-
help needed for writing query
i have the following tables(with data) as mentioned below
FK*-foregin key (SUBJECTS)
FK**-foregin key (COMBINATION)
1)SUBJECTS(table name)
SUB_ID(NUMBER) SUB_CODE(VARCHAR2) SUB_NAME (VARCHAR2)
2 02 Computer Science
3 03 Physics
4 04 Chemistry
5 05 Mathematics
7 07 Commerce
8 08 Computer Applications
9 09 Biology
2)COMBINATION
COMB_ID(NUMBER) COMB_NAME(VARCHAR2) SUB_ID1(NUMBER(FK*)) SUB_ID2(NUMBER(FK*)) SUB_ID3(NUMBER(FK*)) SUBJ_ID4(NUMBER(FK*))
383 S1 9 4 2 3
384 S2 4 2 5 3
---------I actually designed the ABOVE table also like this
3) a)COMBINATION
COMB_ID(NUMBER) COMB_NAME(VARCHAR2)
383 S1
384 S2
b)COMBINATION_DET
COMBDET_ID(NUMBER) COMB_ID(FK**) SUB_ID(FK*)
1 383 9
2 383 4
3 383 2
4 383 3
5 384 4
6 384 2
7 384 5
8 384 3
Business rule: a combination consists of a maximum of 4 subjects (must contain)
and the user is less relevant to a COMB_NAME(name of combinations) but user need
the subjects contained in combinations
i need the following output
COMB_ID COMB_NAME SUBJECT1 SUBJECT2 SUBJECT3 SUBJECT4
383 S1 Biology Chemistry Computer Science Physics
384 S2 Chemistry Computer Science Mathematics Physics
or even this is enough(what i actually needed)
COMB_ID subjects
383 Biology,Chemistry,Computer Science,Physics
384 Chemistry,Computer Science,Mathematics,Physics
you can use any of the COMBINATION table(either (2) or (3))
and i want to know
1)which design is good in this case
(i think SUB_ID1,SUB_ID2,SUB_ID3,SUB_ID4 is not a
good method to link with same table but if 4 subjects only(and must) comes
detail table is not neccessary )
now i am achieving the result by program-coding in C# after getting the rows from oracle
i am using oracle 9i (also ODP.NET)
i want to know how can i get the result in the stored procedure itsef.
2)how it could be designed in any other way.
any help/suggestion is welcome
thanks for your time --PradeeshWell I forgot the table-alias, here now with:
SELECT C.COMB_ID
, C.COMB_NAME
, (SELECT SUB_NAME
FROM SUBJECTS
WHERE SUB_ID = C.SUB_ID1) AS SUBJECT_NAME1
, (SELECT SUB_NAME
FROM SUBJECTS
WHERE SUB_ID = C.SUB_ID2) AS SUBJECT_NAME2
, (SELECT SUB_NAME
FROM SUBJECTS
WHERE SUB_ID = C.SUB_ID3) AS SUBJECT_NAME3
, (SELECT SUB_NAME
FROM SUBJECTS
WHERE SUB_ID = C.SUB_ID4) AS SUBJECT_NAME4
FROM COMBINATION C;
As you need exactly 4 subjects, the columns-solution is just fine I would say. -
Help needed in writing a function.
I am using Oracle 11g and SQL plus. I am a complete newbie, so I need some help here in writing a function. I guess my question is more about writing the trigonometric functions within the function.
latA, longA latB, longB // these are the four input parameters,
theta = longA - longB
distX = sin( latA * PI / 180) * sin ( latB * PI /180) + cos ( latA * PI/180) * cos ( latB * PI/180) * cos ( theta * PI / 180)
distY = acos(distX) // this is arc cosine
distZ = distY * 180 / PI // PI refers to the mathematical PI
distP = distZ * 60 * 1.1515; // this value should be returned. Of course the intermediate variable names don't matter.
Please help. Thanks.CREATE OR REPLACE FUNCTION fucntion_name(latA IN NUMBER, longA IN NUMBER, latB IN NUMBER, longB IN NUMBER) RETURN NUMBER
IS
pi CONSTANT NUMBER:=3.14159;
theta NUMBER;
distX NUMBER;
distY NUMBER;
distZ NUMBER;
distP NUMBER;
BEGIN
theta :=longA - longB;
distX :=sin( latA * PI /180) * sin ( latB * PI /180) + cos ( latA * PI/180) * cos ( latB * PI/180) * cos ( theta * PI / 180);
distY :=acos(distX); --this is arc cosine
distZ :=distY * 180/PI; --PI refers to the mathematical PI
distP :=distZ * 60 * 1.1515; --this value should be returned. Of course the intermediate variable names don't matter.
RETURN distP;
END;Edited by: Ora on May 3, 2011 11:46 PM -
Hi,
Could anyone help me in writing below query without syntax errors.
I tried but no luck
select xmlelement("g", XMLATTRIBUTES(g.contentgroup_id as "id",g.groupname as "label",
(select xmlagg(xmlelement ("c",XMLATTRIBUTES(c.title as "title",c.content_id as "id")))) as "A"))
as "A" from
(SELECT g.contentgroup_id AS id, g.groupname AS label, c.title AS label, c.content_id AS id
FROM content_ec c FULL OUTER JOIN contentgroup_ec g ON c.group_id = g.contentgroup_id
oRDER BY g.groupname ,c.title ASC );
Any help really appreciated.
ThanksFew tips to get your question answered here
1. Give your database version. Some thing that does not work in one version works fine in the next. And 8i,9i or 10g is not version. best way to give the version is to query your v$version table like this.
SQL> select * from v$version where rownum = 1
2 /
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod2. You should understand we don't have what you have, meaning you should provide your data structure and some sample data for us to help.
3. "I got an error"... "Its not working"... and the list goes on. Sentences like this does not help. If you got a error past the entire error. If stuff does not work, tell us the details.
4. Just don't throw some output and say i want it. Please explain to every one how you derive it.
5. And the most important thing. Use \...\ tag to format. Please.. Please.. Please.. use it. It helps every one a lot. When you use it your SQL looks some thing like this.
SELECT xmlelement("g", XMLATTRIBUTES(g.contentgroup_id as "id",g.groupname as "label",
(select xmlagg(xmlelement ("c",XMLATTRIBUTES(c.title as "title",c.content_id as "id")))) as "A")) as "A"
FROM (SELECT g.contentgroup_id AS id,
g.groupname AS label,
c.title AS label,
c.content_id AS id
FROM content_ec c
FULL OUTER JOIN contentgroup_ec g
ON c.group_id = g.contentgroup_id
ORDER BY g.groupname ,c.title ASC );6. And also do search this forum. Most of your my queries are answered by simple search.
Thanks,
Karthick. -
SAP PS Module Report, Help needed for the Right Logic.
Hi,
I have to develop a PS module Report . This spec of this report is when you enter , project # , month , date , proj type it should display all the projects and only the billing levels with different fiels like ITD cost, ITD sales, ytd cost, sales, awards etc etc.
Right now Iam getting the O/P : in the following manner, There are many fields I am just showing the desired ones which have to be changed.
Proj, Title, award, ITDsales, ITD cost , ytd sales, ytd costs,
14148, New prj 123 -- --- -
14148-B01, bill1 -
234 -
456 -
14148-B02, bill2 -
789 -
123 -
14148.001 wbs1 -
123 -
456
14148.001 wbs2 -
567 -
890
But for me the desired output must be only for project and the billing levels. It shouldnt be for WBS elements xxxx.001 and xxxx.002.
Desired output:
Proj, Title, award, ITDsales, ITD cost , ytd sales, ytd costs,
14148, New prj 123 -- 690 -
1346
14148-B01, bill1 -
234 -
456 -
14148-B02, bill2 -
789 -
123 -
The ITD costs and YTD costs must be added 123 + 567 = 690 and
456+890 = 1346.
And these values must come on the project level.
P.S: I can restrict the values for wbs elements , means I can filter them at PRPS table by giving prps-stufe LE 2. Then I wont get the wbs level, But I want the values of these to be added up and then show it on the project level.
Please go through this code and let me know where exactly I need to put the right logic to work in the desired manner.
Thanks in advance
Dan
Code Below************************
[code]TABLES: PROJ, "Project Definition
PRPS, "WBS Elements
prhi,
CEPC, " Profit Center w/ Group Head info
BPGE, "Plans (12, 13, etc.)
COSP, "Primary Cost Element (Bill Sales, DPC)
COSS, "Secondary Cost Element (Shrd Sls,Sal,etc)
COSB, "Results Analysis Cost Elements (Unbil Sls)
COOI, "Commitments management: Line items
JEST, "Project Status
TCJ04, "Person Responsible for Project
zpclasses, "Project classes.
New Added
CRCO, " Assignment of Work Center to Cost Center
CRHD. " Work Center Header
Record Layout of extracted data
TYPES: BEGIN OF EXDEF, "Data definition of extract data
X_BU(2) TYPE C, "Business Unit
X_CNTR(10) TYPE C, " Profit Center
X_PROJ(24) TYPE C, "Project def (Prj)
X_CREP(30) TYPE C, "Contract Rep.
X_BDREP(25) TYPE C, "BD Rep. name
X_GRPH(15) TYPE C, "Tech Rep employee name
X_ACTREP(15) TYPE C, "Acct Rep employee name
X_PMGR(15) TYPE C, "PM employee name
X_TTLE(35) TYPE C, "Title
X_CLNT(20) TYPE C, "Client
X_POCN(20) TYPE C, "Prime Contract Number
X_TYPE(13) TYPE C, "Order Type Sarnoff
X_OPEN(10) TYPE C, "Open Date
X_CLOSE(10) TYPE C, "Close Date
X_CGT(4) TYPE C, "CO, GV, TC
X_DISTR(2) TYPE C, "Distribution Channel
X_CONTR(6) TYPE C, "Percentage contribution
X_AWRD(14) TYPE C, "Award (Plan 11)
X_P12R(14) TYPE C, "Auth Revenue (Plan 12 @ Rev)
X_P12C(14) TYPE C, "Auth Cost (Plan 12 @ Cost)
X_P13R(14) TYPE C, "Auth Revenue (Plan 13 @ Rev)
X_P13C(14) TYPE C, "Auth Cost (Plan 13 @ Cost)
X_ITDS(14) TYPE C, "ITD Sales
X_ITDC(14) TYPE C, "ITD Costs
X_YTDS(14) TYPE C, "YTD Sales
X_YTDC(14) TYPE C, "YTD Costs
X_MTHS(14) TYPE C, "Current Month Sales
X_MTHC(14) TYPE C, "Current Month Costs
X_ITDB(14) TYPE C, "ITD Billed Sales
X_YTDB(14) TYPE C, "YTD Billed Sales
X_MTHB(14) TYPE C, "Current Month Billed Sales
X_COMM(14) TYPE C, "Commitments
X_STAT(6) TYPE C, "Active or Inactive (REL, TECO, or CLSD)
X_ZPROJCLASS(12),
X_MTHIC(14) TYPE C, "Current Month Incremental Costs
X_YTDIC(14) TYPE C, "YTD Incremental Costs
X_ITDIC(14) TYPE C, "ITD Incremental Costs
X_ZSCURVE(10) TYPE C, "S-CURVE Status
New Added
X_CM_COST(20) TYPE C,
X_AM_COST(20) TYPE C,
X_TL_COST(20) TYPE C,
X_KP_COST(20) TYPE C,
X_PM_COST(20) TYPE C,
END OF EXDEF.
Data declarations
FIELD-SYMBOLS <MNT> .
DATA: ETAB TYPE EXDEF OCCURS 100 WITH HEADER LINE.
DATA: X1_PM_COST(20) TYPE C,
X1_TL_COST(20) TYPE C,
X1_AM_COST(20) TYPE C,
X1_CM_COST(20) TYPE C,
X1_KP_COST(20) TYPE C.
DATA: KOKRS_FIXED LIKE PROJ-VKOKR VALUE 'DSRC', "Controlling Area
TOTAL_AWARD LIKE BPGE-WTGES,
TOTAL_AUTHR12 LIKE BPGE-WTGES,
TOTAL_AUTHC12 LIKE BPGE-WTGES,
TOTAL_AUTHR13 LIKE BPGE-WTGES,
TOTAL_AUTHC13 LIKE BPGE-WTGES,
TOTAL_ITDSALES LIKE BPGE-WTGES,
TOTAL_ITDCOSTS LIKE BPGE-WTGES,
TOTAL_ITDICOSTS LIKE BPGE-WTGES,
TOTAL_YTDSALES LIKE BPGE-WTGES,
TOTAL_YTDCOSTS LIKE BPGE-WTGES,
TOTAL_YTDICOSTS LIKE BPGE-WTGES,
TOTAL_MTHSALES LIKE BPGE-WTGES,
TOTAL_MTHCOSTS LIKE BPGE-WTGES,
TOTAL_MTHICOSTS LIKE BPGE-WTGES,
TOTAL_ITDBILLED LIKE BPGE-WTGES,
TOTAL_YTDBILLED LIKE BPGE-WTGES,
TOTAL_MTHBILLED LIKE BPGE-WTGES,
TOTAL_COMMITMENT LIKE COOI-WTGBTR,
HOLD_PRART LIKE PRPS-PRART,
COUNT_PROJECTS TYPE I,
MNT_INDX(20) TYPE C,
HLD_INDX(3) TYPE N,
YYYY_MM(10) TYPE C,
TEMP-DATE(8) TYPE C.
Selection Screen
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN BEGIN OF BLOCK XEXTRPM WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 2.
PARAMETERS MONTH(2) TYPE N OBLIGATORY.
PARAMETERS YEAR(4) TYPE N OBLIGATORY.
SELECT-OPTIONS: EXTRPRJ FOR PROJ-PSPID. " Range of Projects
SELECT-OPTIONS: EXTRTYP FOR PRPS-PRART. "Project Types (CO,GV,etc.*)
SELECT-OPTIONS: EXTRPCTR FOR PROJ-PRCTR. " Range of Profit centers
SELECTION-SCREEN SKIP 2.
PARAMETERS: OPT1 RADIOBUTTON GROUP OPTN,
OPT2 RADIOBUTTON GROUP OPTN DEFAULT 'X'.
select-options : s_pc for proj-zprojclass. "project class
SELECTION-SCREEN END OF BLOCK XEXTRPM.
Select Tables
START-OF-SELECTION.
write: / 'Sales data (Unshared) extracted on: ', sy-datum.
uline.
CLEAR: COUNT_PROJECTS,
TOTAL_AWARD,
TOTAL_AUTHR12,
TOTAL_AUTHC12,
TOTAL_AUTHR13,
TOTAL_AUTHC13,
TOTAL_ITDSALES,
TOTAL_ITDCOSTS,
TOTAL_YTDSALES,
TOTAL_YTDCOSTS,
TOTAL_MTHSALES,
TOTAL_MTHCOSTS,
TOTAL_ITDBILLED,
TOTAL_YTDBILLED,
TOTAL_MTHBILLED,
TOTAL_COMMITMENT,
ETAB.
PROJ Table Project Definition
SELECT * FROM PROJ "Project Definition
WHERE PSPID IN EXTRPRJ AND " Range of Project Numbers
PRCTR IN EXTRPCTR and " Range of Profit center
zprojclass in s_pc. "project class
SELECT * FROM PRPS WHERE "WBS Elements
PRART IN EXTRTYP " Range of Proj.Types (CO,GV,TC..
and PSPHI = PROJ-PSPNR.
HOLD_PRART = ' '. "clears project type
CLEAR ETAB.
ETAB-X_PROJ = PRPS-POSID.
ETAB-X_BU = PRPS-PRCTR(2). "Business Unit
ETAB-X_PMGR = PROJ-VERNA. "Project Manager
IF PRPS-PRCTR(2) = '01'.
ETAB-X_CNTR = PRPS-PRCTR. " Profit Center
CONCATENATE SPACE PRPS-PRCTR INTO ETAB-X_CNTR SEPARATED BY SPACE.
ELSE.
ETAB-X_CNTR = PRPS-PRCTR. " Profit Center
ENDIF.
ETAB-X_TTLE = PRPS-POST1. "Title
CLEAR TEMP-DATE.
TEMP-DATE = PROJ-PLFAZ. "Project planned start date
CONCATENATE TEMP-DATE4(2) '/' TEMP-DATE6(2) '/'
TEMP-DATE+0(4) INTO ETAB-X_OPEN.
TEMP-DATE = PROJ-PLSEZ. "Project planned finish date
CONCATENATE TEMP-DATE4(2) '/' TEMP-DATE6(2) '/'
TEMP-DATE+0(4) INTO ETAB-X_CLOSE.
Tech Lead
will comment below
SELECT SINGLE VERNA FROM TCJ04 "Tech Lead name from TCJ04
INTO (ETAB-X_GRPH) WHERE VERNR = PROJ-ZGRPHD.
End Of Tech Lead
Account Manager
SELECT SINGLE VERNA FROM TCJ04 "Acct Manager from TCJ04
INTO (ETAB-X_BDREP) WHERE VERNR = PROJ-ZBUSDEV.
******End Of Account Manager
Key Personnel
SELECT SINGLE VERNA FROM TCJ04 "Account Rep name from TCJ04
INTO (ETAB-X_ACTREP) WHERE VERNR = PROJ-ZRESPDIR.
********End of Key Personnel
**Contract Manager
SELECT SINGLE VERNA FROM TCJ04 "Contract Rep name from TCJ04
INTO (ETAB-X_CREP) WHERE VERNR = PROJ-ZCNTREP.
End of Contract Manager
PRPS Table WBS's attached to the Project
SELECT * FROM PRPS WHERE "WBS Elements
PRART IN EXTRTYP "Range of Proj.Types (CO,GV,TC..
AND PSPHI = PROJ-PSPNR.
order by posid stufe. "Sort by WBS & Level (needed?)
get info from level 1 of the WBS
IF PRPS-STUFE EQ 1. "top-level WBS element
HOLD_PRART = PRPS-PRART. "save project type for later
ETAB-X_STAT = '????'. "set ? as the default status
get Status for level 1
SELECT * FROM JEST "use JEST to determine Status
WHERE OBJNR = PRPS-OBJNR
AND INACT EQ SPACE. "space denotes an active status
CASE JEST-STAT. "find the system status (Ixxx)
WHEN 'I0001'.
ETAB-X_STAT = 'CRTD'. "Created
WHEN 'I0002'.
ETAB-X_STAT = 'REL'. "Released
WHEN 'I0045'.
ETAB-X_STAT = 'TECO'. "Technically Complete
WHEN 'I0046'.
ETAB-X_STAT = 'CLSD'. "Closed
ENDCASE.
ENDSELECT.
Select only active projects (ie; those not with TECO or CLSD)
IF OPT2 EQ 'X'
AND ( ETAB-X_STAT EQ 'TECO'
OR ETAB-X_STAT EQ 'CLSD' ).
EXIT.
ENDIF.
*comment Contract Rep and Proj man because we get them from PROJ now
etab-x_crep = prps-zzcont. "Contract Rep.
etab-x_pmgr = prps-verna. "Program Manager Name
ETAB-X_CLNT = PRPS-ZZMANDT. "Client Name
ETAB-X_CGT = PRPS-PRART. "CO, GV, TC, etc
ETAB-X_DISTR = PRPS-ZZVTWEG. "Distrib Channel (ie; GP, etc.)
ETAB-X_CONTR = PRPS-USR04. "Contribution %
ETAB-X_POCN = PRPS-ZZPOCN. "Contract Number
ETAB-X_TYPE = PRPS-ZZORDT. "Order Type Sarnoff
Award and Authorization (Revenue & Cost)
SELECT * FROM BPGE
WHERE OBJNR = PRPS-OBJNR
AND LEDNR = '0001' "Budget / Planning Ledger
AND TRGKZ = 'N' "Object indicator
AND WRTTP = '01' "Value Type
AND ( VERSN = '011' "011 = Award
OR VERSN = '012' "012 = Billing Authorization
OR VERSN = '013' ). "013 = RA Authorization
"010 = Funding Authorization
Award Plan 11
IF BPGE-VERSN = '011'. "Plan 11 = Award
CASE BPGE-VORGA.
WHEN 'KSTP'. "KSTP = Cost level
ETAB-X_AWRD = ETAB-X_AWRD + BPGE-WTGES.
ENDCASE.
ENDIF.
IF prps-stufe eq '2'.
Authorization (Revenue & Cost plan 12) Plan 12
IF BPGE-VERSN = '012'. "Plan 12 = RA Authorization
CASE BPGE-VORGA.
WHEN 'KSTR'. "KSTR = Revenue level
ETAB-X_P12R = ETAB-X_P12R - BPGE-WTGES.
WHEN 'KSTP'. "KSTP = Cost level
ETAB-X_P12C = ETAB-X_P12C + BPGE-WTGES.
ENDCASE.
ENDIF.
Authorization (Revenue & Cost plan 13) Plan 13
IF BPGE-VERSN = '013'. "Plan 13 = RA Authorization
CASE BPGE-VORGA.
WHEN 'KSTR'. "KSTR = Revenue level
ETAB-X_P13R = ETAB-X_P13R - BPGE-WTGES.
WHEN 'KSTP'. "KSTP = Cost level
ETAB-X_P13C = ETAB-X_P13C + BPGE-WTGES.
ENDCASE.
ENDIF.
endif.
ENDSELECT. "BPGE
ENDIF. "end of if prps-stufe eq 1. top-level WBS element
COSP Table (External Postings) Awards
COSP Table (External Postings) Billed Sales
COSP Table (External Postings) DPC's & Legacy Load
SELECT * FROM COSP
WHERE OBJNR = PRPS-OBJNR AND
GJAHR LE YEAR
AND (
( kstar = '0000400999' and "old CE for Award $
( KSTAR BETWEEN '0000400990' AND '0000400999' AND
VERSN = '011' AND "11 = Award
WRTTP = '01' ) "01 = Planned
OR ( ( KSTAR BETWEEN '0000400001' AND '0000400989' OR
KSTAR BETWEEN '0000999001' AND '0000999003' ) AND
WRTTP = '04' ) "04 = Actuals
OR ( ( KSTAR BETWEEN '0000998001' AND '0000998010' OR
KSTAR BETWEEN '0000600001' AND '0000601999' ) AND
WRTTP = '04' ) "04 = Actuals
*------- Awards
if cosp-kstar = '0000400999' and "old 400999 = Awards
IF COSP-KSTAR BETWEEN '0000400990' AND '0000400999' AND
COSP-VERSN = '011' AND "11 = Award
COSP-WRTTP = '01'. "01 = Planned
IF YEAR = COSP-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSP-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_AWRD = ETAB-X_AWRD + <MNT>.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSP-GJAHR.
ETAB-X_AWRD = ETAB-X_AWRD +
COSP-WKG001 + COSP-WKG002 +
COSP-WKG003 + COSP-WKG004 +
COSP-WKG005 + COSP-WKG006 +
COSP-WKG007 + COSP-WKG008 +
COSP-WKG009 + COSP-WKG010 +
COSP-WKG011 + COSP-WKG012 +
COSP-WKG013 + COSP-WKG014 +
COSP-WKG015 + COSP-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
*------- Billed Sales
IF ( COSP-KSTAR BETWEEN '0000400001' AND '0000400989' OR
COSP-KSTAR BETWEEN '0000999001' AND '0000999003' ) AND
COSP-WRTTP = '04'.
"0000999001 = ITD Sales
"0000999003 = ITD Billed Revenue
IF YEAR = COSP-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSP-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDB = ETAB-X_ITDB - <MNT>.
ETAB-X_YTDB = ETAB-X_YTDB - <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHB = ETAB-X_MTHB - <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSP-GJAHR.
ETAB-X_ITDB = ETAB-X_ITDB -
COSP-WKG001 - COSP-WKG002 -
COSP-WKG003 - COSP-WKG004 -
COSP-WKG005 - COSP-WKG006 -
COSP-WKG007 - COSP-WKG008 -
COSP-WKG009 - COSP-WKG010 -
COSP-WKG011 - COSP-WKG012 -
COSP-WKG013 - COSP-WKG014 -
COSP-WKG015 - COSP-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
*------- DPC's & Legacy Load
IF ( COSP-KSTAR BETWEEN '0000998001' AND '0000998010' OR
COSP-KSTAR BETWEEN '0000600001' AND '0000601999' ) AND
COSP-WRTTP = '04'.
IF YEAR = COSP-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSP-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDC = ETAB-X_ITDC + <MNT>.
ETAB-X_YTDC = ETAB-X_YTDC + <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHC = ETAB-X_MTHC + <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSP-GJAHR.
ETAB-X_ITDC = ETAB-X_ITDC +
COSP-WKG001 + COSP-WKG002 +
COSP-WKG003 + COSP-WKG004 +
COSP-WKG005 + COSP-WKG006 +
COSP-WKG007 + COSP-WKG008 +
COSP-WKG009 + COSP-WKG010 +
COSP-WKG011 + COSP-WKG012 +
COSP-WKG013 + COSP-WKG014 +
COSP-WKG015 + COSP-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDSELECT.
COOI Table (Commitments) commitments for the WBS elements
SELECT * FROM COOI
WHERE OBJNR = PRPS-OBJNR.
ETAB-X_COMM = ETAB-X_COMM + COOI-WTGBTR.
ENDSELECT.
COSS Table (External Postings) G&A on Commitments
COSS Table (External Postings) Shared Billed Sales
COSS Table (External Postings) Shared DPC's
COSS Table (External Postings) Salary,ESE,OH, & G&A
SELECT * FROM COSS
WHERE
( OBJNR = PRPS-OBJNR AND
WRTTP = '22' ) "G&A on Commitments
OR
( OBJNR = PRPS-OBJNR AND
GJAHR LE YEAR AND
WRTTP = '04' AND "04 = Actuals
( "Shared Billed Sales
( KSTAR BETWEEN '0000400001' AND '0000400989' OR
KSTAR BETWEEN '0000999001' AND '0000999003' )
OR "Shared DPC's
( KSTAR BETWEEN '0000600001' AND '0000601999' )
OR "Salary,ESE,OH, & G&A
( ( KSTAR BETWEEN '0000001000' AND '0000001999' OR
KSTAR BETWEEN '0000002100' AND '0000002199' OR
KSTAR BETWEEN '0000002500' AND '0000002599' OR
KSTAR BETWEEN '0000002800' AND '0000002899' ) )
and parob not like 'PR%' ) "commented out on 4/19/2000
*------- G&A on Commitments (NOTE: data is always as of the RUN date)
IF COSS-WRTTP = '22'.
ETAB-X_COMM = ETAB-X_COMM +
COSS-WKG001 + COSS-WKG002 +
COSS-WKG003 + COSS-WKG004 +
COSS-WKG005 + COSS-WKG006 +
COSS-WKG007 + COSS-WKG008 +
COSS-WKG009 + COSS-WKG010 +
COSS-WKG011 + COSS-WKG012 +
COSS-WKG013 + COSS-WKG014 +
COSS-WKG015 + COSS-WKG016.
ENDIF.
*------- Shared Billed Sales
IF ( COSS-KSTAR BETWEEN '0000400001' AND '0000400989' OR
COSS-KSTAR BETWEEN '0000999001' AND '0000999003' ) AND
COSS-WRTTP = '04'.
IF YEAR = COSS-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSS-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDB = ETAB-X_ITDB - <MNT>.
ETAB-X_YTDB = ETAB-X_YTDB - <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHB = ETAB-X_MTHB - <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSS-GJAHR.
ETAB-X_ITDB = ETAB-X_ITDB -
COSS-WKG001 - COSS-WKG002 -
COSS-WKG003 - COSS-WKG004 -
COSS-WKG005 - COSS-WKG006 -
COSS-WKG007 - COSS-WKG008 -
COSS-WKG009 - COSS-WKG010 -
COSS-WKG011 - COSS-WKG012 -
COSS-WKG013 - COSS-WKG014 -
COSS-WKG015 - COSS-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
*------- Shared DPC's
IF COSS-KSTAR BETWEEN '0000600001' AND '0000601999' AND
COSS-WRTTP = '04'.
IF YEAR = COSS-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSS-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDC = ETAB-X_ITDC + <MNT>.
ETAB-X_YTDC = ETAB-X_YTDC + <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHC = ETAB-X_MTHC + <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSS-GJAHR.
ETAB-X_ITDC = ETAB-X_ITDC +
COSS-WKG001 + COSS-WKG002 +
COSS-WKG003 + COSS-WKG004 +
COSS-WKG005 + COSS-WKG006 +
COSS-WKG007 + COSS-WKG008 +
COSS-WKG009 + COSS-WKG010 +
COSS-WKG011 + COSS-WKG012 +
COSS-WKG013 + COSS-WKG014 +
COSS-WKG015 + COSS-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
*------- Salary,ESE,OH,& G&A
IF ( COSS-KSTAR BETWEEN '0000001000' AND '0000001999' OR
COSS-KSTAR BETWEEN '0000002100' AND '0000002199' OR
COSS-KSTAR BETWEEN '0000002500' AND '0000002599' OR
COSS-KSTAR BETWEEN '0000002800' AND '0000002899' ) AND
COSS-WRTTP = '04'.
IF YEAR = COSS-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSS-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDC = ETAB-X_ITDC + <MNT>.
ETAB-X_YTDC = ETAB-X_YTDC + <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHC = ETAB-X_MTHC + <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSS-GJAHR.
ETAB-X_ITDC = ETAB-X_ITDC +
COSS-WKG001 + COSS-WKG002 +
COSS-WKG003 + COSS-WKG004 +
COSS-WKG005 + COSS-WKG006 +
COSS-WKG007 + COSS-WKG008 +
COSS-WKG009 + COSS-WKG010 +
COSS-WKG011 + COSS-WKG012 +
COSS-WKG013 + COSS-WKG014 +
COSS-WKG015 + COSS-WKG016.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDSELECT.
COSB Table (Results from running RA) Unbilled Sales
SELECT * FROM COSB
WHERE OBJNR = PRPS-OBJNR
AND KSTAR BETWEEN '0000003004' AND '0000003005'
"0000003004 = Unbilled Revenue
"0000003005 = Unearned Revenue
AND GJAHR LE YEAR
AND WRTTP = '32'. "32 = Results Analysis
IF YEAR = COSB-GJAHR.
DO.
IF SY-INDEX LE MONTH.
MOVE SY-INDEX TO HLD_INDX.
MNT_INDX = 'COSB-WKGXXX'.
REPLACE 'XXX' WITH HLD_INDX INTO MNT_INDX.
ASSIGN (MNT_INDX) TO <MNT>.
ETAB-X_ITDS = ETAB-X_ITDS - <MNT>.
ETAB-X_YTDS = ETAB-X_YTDS - <MNT>.
IF SY-INDEX = MONTH.
ETAB-X_MTHS = ETAB-X_MTHS - <MNT>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSEIF YEAR > COSB-GJAHR.
ETAB-X_ITDS = ETAB-X_ITDS -
COSB-WKG001 - COSB-WKG002 -
COSB-WKG003 - COSB-WKG004 -
COSB-WKG005 - COSB-WKG006 -
COSB-WKG007 - COSB-WKG008 -
COSB-WKG009 - COSB-WKG010 -
COSB-WKG011 - COSB-WKG012 -
COSB-WKG013 - COSB-WKG014 -
COSB-WKG015 - COSB-WKG016.
ELSE.
EXIT.
ENDIF.
ENDSELECT.
ENDSELECT. "End of WBS records (from PRPS) for project
Get Total Sales by adding Billed Sales to Unbilled Sales.
ETAB-X_ITDS = ETAB-X_ITDS + ETAB-X_ITDB.
ETAB-X_YTDS = ETAB-X_YTDS + ETAB-X_YTDB.
ETAB-X_MTHS = ETAB-X_MTHS + ETAB-X_MTHB.
IF HOLD_PRART IN EXTRTYP. "Matches the user requested project type
IF OPT1 EQ 'X' OR "All projects
( OPT2 EQ 'X' AND "Only active projects
ETAB-X_STAT NE 'TECO' AND
ETAB-X_STAT NE 'CLSD' ).
TOTAL_AWARD = TOTAL_AWARD + ETAB-X_AWRD.
TOTAL_AUTHR12 = TOTAL_AUTHR12 + ETAB-X_P12R .
TOTAL_AUTHC12 = TOTAL_AUTHC12 + ETAB-X_P12C.
TOTAL_AUTHR13 = TOTAL_AUTHR13 + ETAB-X_P13R.
TOTAL_AUTHC13 = TOTAL_AUTHC13 + ETAB-X_P13C.
TOTAL_ITDSALES = TOTAL_ITDSALES + ETAB-X_ITDS.
TOTAL_ITDCOSTS = TOTAL_ITDCOSTS + ETAB-X_ITDC.
TOTAL_YTDSALES = TOTAL_YTDSALES + ETAB-X_YTDS.
TOTAL_YTDCOSTS = TOTAL_YTDCOSTS + ETAB-X_YTDC.
TOTAL_MTHSALES = TOTAL_MTHSALES + ETAB-X_MTHS.
TOTAL_MTHCOSTS = TOTAL_MTHCOSTS + ETAB-X_MTHC.
TOTAL_ITDBILLED = TOTAL_ITDBILLED + ETAB-X_ITDB.
TOTAL_YTDBILLED = TOTAL_YTDBILLED + ETAB-X_YTDB.
TOTAL_MTHBILLED = TOTAL_MTHBILLED + ETAB-X_MTHB.
TOTAL_COMMITMENT = TOTAL_COMMITMENT + ETAB-X_COMM.
PERFORM SHIFT_SIGN.
APPEND ETAB. "Write data to internal table
CLEAR ETAB.
COUNT_PROJECTS = COUNT_PROJECTS + 1. "Count # of Projects
ENDIF.
ENDIF.
ENDSELECT.
ENDSELECT. "End of Projects from PROJ table
PERFORM GRAND_TOTALS.
SORT ETAB BY X_BU X_PROJ.
ETAB-X_BU = 'BU'.
ETAB-X_CNTR = 'PrftCntr'.
ETAB-X_PROJ = 'Proj'.
ETAB-X_CREP = 'Contract Mgr'.
ETAB-X_BDREP = 'Account Mgr'.
ETAB-X_GRPH = 'Technical Lead'.
ETAB-X_ACTREP = 'Key Person1'.
ETAB-X_PMGR = 'Program Mgr'.
ETAB-X_TTLE = 'Title'.
ETAB-X_CLNT = 'Client'.
ETAB-X_POCN = 'Contract #'.
ETAB-X_TYPE = 'Type'.
ETAB-X_OPEN = 'Open'.
ETAB-X_CLOSE = 'Close'.
ETAB-X_CGT = 'CGT'.
ETAB-X_DISTR = 'DC'.
ETAB-X_CONTR = 'Contr%'.
ETAB-X_AWRD = 'Award'.
ETAB-X_P12R = 'Auth12 Sales'.
ETAB-X_P12C = 'Auth12 Cost'.
ETAB-X_P13R = 'Auth13 Sales'.
ETAB-X_P13C = 'Auth13 Cost'.
ETAB-X_ITDS = 'ITD Sales'.
ETAB-X_ITDC = 'ITD Costs'.
ETAB-X_YTDS = 'YTD Sales'.
ETAB-X_YTDC = 'YTD Costs'.
ETAB-X_MTHS = 'Mth Sales'.
ETAB-X_MTHC = 'Mth Costs'.
ETAB-X_ITDB = 'ITD Billed'.
ETAB-X_YTDB = 'YTD Billed'.
ETAB-X_MTHB = 'Mth Billed'.
ETAB-X_COMM = 'Commitments'.
ETAB-X_STAT = 'Status'.
INSERT ETAB INDEX 1. "Write a report header line to internal table
CLEAR ETAB.
CALL FUNCTION 'Z_RH_START_EXCEL_DATA_OLE'
EXPORTING
data_name = 'C:\WINNT\Profiles\cbraswell\Desktop\TestTemp.xlt'
DATA_NAME = 'ZSales.XLS'
DATA_PATH_FLAG = 'W'
DATA_TYPE = 'DAT'
DATA_BIN_FILE_SIZE = 'ZSales'
CHART_TITLE = 'ZSales'
CHART_TYPE = 2
CATEGORY_TITLE = 'ZSales'
VALUE_TITLE = 'ZSales'
DATA_XTOP_COR = 0
DATA_YTOP_COR = 0
DATA_XBOT_COR = 0
DATA_YBOT_COR = 0
CATEGORY_XTOP_COR = 0
CATEGORY_YTOP_COR = 0
CATEGORY_XBOT_COR = 0
CATEGORY_YBOT_COR = 0
TABLES
DATA_TAB = ETAB
EXCEPTIONS
NO_BATCH = 1
DOWNLOAD_ERROR = 2
INVALID_TYPE = 3
INTERNAL_ERROR = 4
NO_OLE_SUPPORT = 5
OLE_FILE_ERROR = 6
OLE_ERROR = 7
NO_DATA = 8
COORDINATE_ERROR = 9
OTHERS = 10.
Negative # sign in the front of number for downloading to Excel
FORM SHIFT_SIGN.
IF ETAB-X_AWRD CA '-'. SHIFT ETAB-X_AWRD RIGHT CIRCULAR. ENDIF.
IF ETAB-X_P12R CA '-'. SHIFT ETAB-X_P12R RIGHT CIRCULAR. ENDIF.
IF ETAB-X_P12C CA '-'. SHIFT ETAB-X_P12C RIGHT CIRCULAR. ENDIF.
IF ETAB-X_P13R CA '-'. SHIFT ETAB-X_P13R RIGHT CIRCULAR. ENDIF.
IF ETAB-X_P13C CA '-'. SHIFT ETAB-X_P13C RIGHT CIRCULAR. ENDIF.
IF ETAB-X_ITDS CA '-'. SHIFT ETAB-X_ITDS RIGHT CIRCULAR. ENDIF.
IF ETAB-X_ITDIC CA '-'. SHIFT ETAB-X_ITDIC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_ITDC CA '-'. SHIFT ETAB-X_ITDC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_YTDS CA '-'. SHIFT ETAB-X_YTDS RIGHT CIRCULAR. ENDIF.
IF ETAB-X_YTDC CA '-'. SHIFT ETAB-X_YTDC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_YTDIC CA '-'. SHIFT ETAB-X_YTDIC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_MTHS CA '-'. SHIFT ETAB-X_MTHS RIGHT CIRCULAR. ENDIF.
IF ETAB-X_MTHC CA '-'. SHIFT ETAB-X_MTHC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_MTHIC CA '-'. SHIFT ETAB-X_MTHIC RIGHT CIRCULAR. ENDIF.
IF ETAB-X_ITDB CA '-'. SHIFT ETAB-X_ITDB RIGHT CIRCULAR. ENDIF.
IF ETAB-X_YTDB CA '-'. SHIFT ETAB-X_YTDB RIGHT CIRCULAR. ENDIF.
IF ETAB-X_MTHB CA '-'. SHIFT ETAB-X_MTHB RIGHT CIRCULAR. ENDIF.
IF ETAB-X_COMM CA '-'. SHIFT ETAB-X_COMM RIGHT CIRCULAR. ENDIF.
ENDFORM.
FORM GRAND_TOTALS.
SKIP 1. .
WRITE: / '----
WRITE: / 'System ID = ', SY-SYSID,
/ 'Client = ', SY-MANDT,
/ 'User = ', SY-UNAME,
/ 'Date of data extract = ', SY-DATUM ,
/ 'Number of Projects = ', COUNT_PROJECTS,
/ 'total Award (Plan 11) = ', TOTAL_AWARD,
/ 'total Auth SalesHi all,
Iam really waiting for someone to see and get the logic right for this code.Iam completely stuck up. i need ur help
Thanks -
Urgent help needed with installation of Logic!
Hi I just installed Logic Pro 9 on the Macbook Pro I bought today and it failed because 'this version of OSX is not compatible with Logic 9.1.1.' What should I do? Two years ago I installed the same version on my previous Macbook. Both Apple and the reseller said it was going to be fine. Please help me as quickly as possible. I need to use it in a couple of hours...thanks. Xavier
Restart your Mac and Run Software update
-
Help needed Regarding a business logic
Hi all,
My business requirement is
requires to get a checksum from the KIOSK field. This would be something like a rule that for a given KIOSK generates a number from 0 to 9.
The Field value contains alphanumerical
Can any of guys help me in this logic.how to generate a checksum for a given field..
Thanks & Regards;
VinitAlright I found something I am not sure if it is of use to you , A checksum is generally used to detect the integrity of file
it is calculated oin basis of hash algorithms so how it is useful to for incoming filed values i m not sure
Please find the links below
http://en.wikipedia.org/wiki/Checksum
http://www.fastsum.com/support/online-help/checksums.php
http://www.flounder.com/checksum.htm
http://www.mkyong.com/java/how-to-generate-a-file-checksum-value-in-java/
If it is useful , you need to implement a hash algorithm
regards
Ninad -
Help needed in writing a Query/Procedure
Hello All,
Need all ur help in writing a query or procedure
Lets say the Table name is DEMO
There i have one column like num it has values
1
2
3
4
5
8
9
10
my query output should be
1-5
8-10
i,e .. if the diff between two rows is greater than 1 then it result should be in a separate group
I need a query/Procedure for this. Kindly help
Regards,
ChandraTried obtaining the output using SQL and the result is as follows:
SQL> WITH T AS
2 (
3 SELECT 1 COL1 FROM DUAL
4 UNION
5 SELECT 2 COL1 FROM DUAL
6 UNION
7 SELECT 3 COL1 FROM DUAL
8 UNION
9 SELECT 4 COL1 FROM DUAL
10 UNION
11 SELECT 5 COL1 FROM DUAL
12 UNION
13 SELECT 8 COL1 FROM DUAL
14 UNION
15 SELECT 9 COL1 FROM DUAL
16 UNION
17 SELECT 10 COL1 FROM DUAL
18 UNION
19 SELECT 13 COL1 FROM DUAL
20 UNION
21 SELECT 14 COL1 FROM DUAL
22 UNION
23 SELECT 15 COL1 FROM DUAL
24 UNION
25 SELECT 16 COL1 FROM DUAL
26 UNION
27 SELECT 23 COL1 FROM DUAL
28 UNION
29 SELECT 24 COL1 FROM DUAL
30 )
31 SELECT OUTPUT FROM
32 (
33 SELECT DECODE(COL3,NULL,COL1, COL2) || '-' || LEAD(DECODE(COL3,NULL,COL3, COL1)) OVER (ORDER BY DECODE(COL3,NULL,COL1, COL2)) OUTPUT FROM
34 (
35 SELECT COL1, LEAD(COL1) OVER (ORDER BY COL1) COL2, LAG(COL1) OVER (ORDER BY COL1) COL3 FROM T
36 )
37 WHERE
38 (COL2 - COL1 > 1 OR COL2 IS NULL OR COL3 IS NULL)
39 )
40 WHERE OUTPUT != '-';
OUTPUT
1-5
8-10
13-16
23-24 -
Help needed in writing SQL CASE or DECODE statement
Hi experts,
I need to write a SQL to select order_num, cntry_cde, prod_id and Qty by joining order_num on PROD_ORDER and PROD_ORDER_TXT.
Here is my sample data
PRODORDER_
order_num cntry_cde Prod_id Qty
100 US A1 5
101 US A2 10
102 AU A3 4
103 AU A4 9
104 IN A5 3
PRODORDER_TXT_
order_num cntry_cde Prod_id
100 US A1
101 US A2
102 NZ A3
103 AU A4
104 A5
Here is the requirement,
1) If the cntry_cde in PROD_ORDER is same as cntry_cde in PROD_ORDER_TXT then select PROD_ORDER.cntry_cde (orders 100, 101, 103)
2) If they are different, pick the country code from PROD_ORDER_TXT (order 102, AU <> NZ)
3) If they are different and PROD_ORDER_TXT.cntry_cde is NULL, I cannot use it as cntry_cde in my report (order 104). It happenend just because of the bad data at source.
I cannot avoid it. Then simply use the cntry_cde from PROD_ORDER
Output expected
100 US A1 5
101 US A2 10
102 NZ A3 4 -- AU changed to NZ
103 AU A4 9
104 IN A5 3 -- IN retained as PROD_ORDER_TXT.cntry_cde is null
sample table creation and insert statements are below
create table prod_order
(order_num number,
cntry_cde CHAR(2),
prod_id VARCHAR2(6),
qty number)
create table prod_order_txt
(order_num number,
cntry_cde CHAR(2),
prod_id VARCHAR2(6))
insert into prod_order values (100, 'US', 'A1',5);
insert into prod_order values (101, 'US', 'A2',1);
insert into prod_order values (102, 'AU', 'A3',4);
insert into prod_order values (103, 'AU', 'A4',9);
insert into prod_order values (104, 'IN', 'A5',3);
insert into prod_order_txt values (100,'US','A1');
insert into prod_order_txt values (101,'US','A2');
insert into prod_order_txt values (102,'NZ','A3');
insert into prod_order_txt values (103,'AU','A4');
insert into prod_order_txt values (104,NULL,'A5');
commit;
Thanks for your help in advance
Edited by: sarvan on Mar 28, 2012 1:39 PMHello
Thank you for posting all of the ddl and test data along with your expected output - very helpful!. One small point would be to remember to type {noformat}{noformat} before and after any section of code or data in your post so that formatting is retained. Anyway, this should be a simple join and a combination of CASE and NVL...Select
po.order_num,
CASE
WHEN po.cntry_cde != NVL(pot.cntry_cde,po.cntry_cde)
THEN
pot.cntry_cde
ELSE
po.cntry_cde
END cntry_code,
po.prod_id,
po.qty
FROM
prod_order po
JOIN
prod_order_txt pot
ON
( po.order_num = pot.order_num
ORDER_NUM CN PROD_I QTY
100 US A1 5
101 US A2 1
102 NZ A3 4
103 AU A4 9
104 IN A5 3
5 rows selected.
HTH
David
Edited by: Bravid on Mar 28, 2012 8:32 AM
corrected != -
Urgent help needed on writing errors in to windows events application logs
Hi all,
we have web based application. Whenever there is critical errors encounters in our application we need to write that errors in to windows
event viewer, application logs. Please help me on how to do this.
do we have any specific API for this ?
thanks in advance
ShivakumarYou should use WinAPI to do so. Asking in JNI forum (or specialized WinAPI forum) for more details is good idea I think.
-
Urgent help needed on writing errors in to windows application logs
Hi all,
we have web based application. Whenever there is critical errors encounters in our application we need to write that errors in to windows
event viewer, application logs. Please help me on how to do this.
do we have any specific API for this ?
thanks in advance
ShivakumarYou should use WinAPI and followed functions: RegisterEventSource(), ReportEvent() and may be some more. It was some time ago as I deal with...
-
Help needed in writing a query
Hi all,
Following is the structure of my table.
Data
Key Number
Id Number
Value varchar2(100)
activity_name varchar2(100)
Creation_Date Date
Eval_Point varchar2(100)
In the above table Id is the primary key.
The column eval_point holds only two types of entries 'activation' or 'completion'
The activity_name column holds the name of the activity.
The sample entries in the table are as follows
Key Value activity_name Creation_Date Id Eval_Point
260002 XXX assign_1 2007-09-21 16:58:41.920000 951 activation
260002 XXX assign_1 2007-09-21 16:58:43.392000 953 completion
260002 XXX assign_2 2007-09-21 16:59:03.732000 956 activation
260002 XXX assign_2 2007-09-21 16:59:04.112000 954 completion
260002 XXX assign_3 2007-09-21 16:59:24.331000 958 activation
260002 XXX assign_3 2007-09-21 16:59:24.421000 957 completion
i need to write a query which gives me data in the following format
value id start_date end_date
XXX YYY 2007-09-21 16:58:41.920000 2007-09-21 16:58:43.392000
where start_date is the creation date of the 'activation' and end_date is the creation_date of 'completion'.
Can somebody help?
-thanks
lavanyahello all,
I would like to re frame my question.
this is the output of the base query
select id,instance_key,sensor_target,activity_sensor,creation_date,eval_point from bpel_variable_sensor_values where instance_key=260002;
953 260002 Assign_1 952 2007-09-21 16:58:43.392000 completion
951 260002 Assign_1 952 2007-09-21 16:58:41.920000 activation
956 260002 Assign_2 955 2007-09-21 16:59:03.732000 activation
954 260002 Assign_2 955 2007-09-21 16:59:04.112000 completion
958 260002 Assign_3 959 2007-09-21 16:59:24.331000 activation
957 260002 Assign_3 959 2007-09-21 16:59:24.421000 completion
962 260002 Assign_4 960 2007-09-21 16:59:44.741000 completion
961 260002 Assign_4 960 2007-09-21 16:59:44.640000 activation
964 260002 Assign_5 965 2007-09-21 17:00:05.290000 completion
963 260002 Assign_5 965 2007-09-21 17:00:04.950000 activation
I am trying out this query
select a.instance_key,a.creation_date,b.creation_date,a.id
from bpel_variable_sensor_values a, bpel_variable_sensor_values b
where a.instance_key=b.instance_key
and a.instance_key=260002
and a.eval_point='activation'
and b.eval_point='completion'
and i am getting 25 entries i.e a cartesian product of a.creation_date
260002 2007-09-21 16:58:41.920000 2007-09-21 16:58:43.392000 951
260002 2007-09-21 16:58:41.920000 2007-09-21 16:59:04.112000 951
260002 2007-09-21 16:58:41.920000 2007-09-21 16:59:24.421000 951
260002 2007-09-21 16:58:41.920000 2007-09-21 16:59:44.741000 951
260002 2007-09-21 16:58:41.920000 2007-09-21 17:00:05.290000 951
260002 2007-09-21 16:59:03.732000 2007-09-21 16:58:43.392000 956
260002 2007-09-21 16:59:03.732000 2007-09-21 16:59:04.112000 956
260002 2007-09-21 16:59:03.732000 2007-09-21 16:59:24.421000 956
260002 2007-09-21 16:59:03.732000 2007-09-21 16:59:44.741000 956
260002 2007-09-21 16:59:03.732000 2007-09-21 17:00:05.290000 956
260002 2007-09-21 16:59:24.331000 2007-09-21 16:58:43.392000 958
260002 2007-09-21 16:59:24.331000 2007-09-21 16:59:04.112000 958
260002 2007-09-21 16:59:24.331000 2007-09-21 16:59:24.421000 958
260002 2007-09-21 16:59:24.331000 2007-09-21 16:59:44.741000 958
260002 2007-09-21 16:59:24.331000 2007-09-21 17:00:05.290000 958
260002 2007-09-21 16:59:44.640000 2007-09-21 16:58:43.392000 961
260002 2007-09-21 16:59:44.640000 2007-09-21 16:59:04.112000 961
260002 2007-09-21 16:59:44.640000 2007-09-21 16:59:24.421000 961
260002 2007-09-21 16:59:44.640000 2007-09-21 16:59:44.741000 961
260002 2007-09-21 16:59:44.640000 2007-09-21 17:00:05.290000 961
260002 2007-09-21 17:00:04.950000 2007-09-21 16:58:43.392000 963
260002 2007-09-21 17:00:04.950000 2007-09-21 16:59:04.112000 963
260002 2007-09-21 17:00:04.950000 2007-09-21 16:59:24.421000 963
260002 2007-09-21 17:00:04.950000 2007-09-21 16:59:44.741000 963
260002 2007-09-21 17:00:04.950000 2007-09-21 17:00:05.290000 963
can soembody help me to reduce these to 5 rows. -
Help needed in optimizing painting logic
Hi,
I am working on a Applet where i have to do a lot of painting, the applet is kind of microsoft project, where u can define a activity as a rectangle and then u can select the rectangle and drag it to some other date,
i am posting a code below, which i am using to draw all the rectangles,
but some times when there is a lot of data scrolling is really very slow
Can any one look at the code, and let help me optimize it,
U can copy the code, compile and run it to see what i mean by slow,
just in class data , change the value 600 to some thing less like 50 and it works very fast
//start code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class TestDisplaySize extends JFrame
private JScrollPane scrollPane ;
private MyPanel panel ;
public TestDisplaySize()
super("layered pane");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
panel = new MyPanel();
scrollPane = new JScrollPane(panel);
Container contentPane = this.getContentPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
setSize(new Dimension(800,600));
this.setVisible(true);
JViewport viewPort = scrollPane.getViewport();
class MyPanel extends JPanel
private int height;
private int last;
private Data data;
public MyPanel()
this.setBackground(Color.white);
this.setOpaque(true);
data = new Data();
int size = data.getSize();
height = size * 50;
last = data.getDataSize(0);
int last1 = last -1;
int length = data.getX(0, last1) + 100;
System.out.println ("Lenght " + length + " height " + height);
setPreferredSize(new Dimension(length, height) );
public void paintComponent(Graphics g)
super.paintComponent(g);
setBackground(Color.white);
Rectangle r = scrollPane.getViewport().getViewRect();
g.setClip((Shape)r);
g.setColor(Color.blue);
int x = 0;
for(int i = 0; i < last ; i++)
x +=60;
g.drawLine(x, 0, x, height);
g.drawString(String.valueOf(i), x, 10);
int size = data.getSize();
int width = 30;
int height = 20;
int yAxis = 20;
g.setColor(Color.cyan);
for(int i = 0; i < size; i++)
int dataSize = data.getDataSize(i);
for(int k = 0; k < dataSize; k++)
int xAxis = data.getX(i, k);
g.fill3DRect(xAxis, yAxis, width, height, true);
yAxis = yAxis + 50;
private class Data
private ArrayList totalData = new ArrayList();
public Data()
for(int i = 0; i < 600; i++)
ArrayList data = new ArrayList();
int l = 50;
for(int k = 0; k < 600; k++)
data.add(new Integer(l));
l = l + 50;
totalData.add(data);
public int getSize()
return totalData.size();
public int getDataSize(int i)
return ((ArrayList)totalData.get(i)).size();
public int getX(int x, int y)
ArrayList data = (ArrayList)totalData.get(x);
Integer i = (Integer)data.get(y);
return i.intValue();
public static void main(String args[])
new TestDisplaySize();You should only paint what is visible. For example if you are presenting a grid of 100 x 100 boxes. And each box is 20 pixels wide and 20 pixels high, then that would create an <image> the size of 2000 x 2000. That is big ;-)
What you want to do, is calculate what portion of the <image> that is viewable in your scrollpane and then only perform the paint operations on those boxes. For example, if the viewports width is 200 and its hieght is 80, then you should only paint 10 x 4 boxes (40 boxes total, each 20x20 pixels in size) -- The trick is figuring out what boxes need to be painted.!! I'll leave that up to you, but should be able to find code examples on the net doing something of this sort.
Hope this helps, and makes sense.
Cory -
Help needed in writing installers for swing application
Hi ,
I want to write an installer for one of our home grown profiler tool. I need to write the installer for different platforms such as windows,linux,solaris,HP-UX.
Does anybody have any idea of how to go ahead in writing installations. Share if there is any good links such as tutorials as well is thr any opensource tool (similar to installsheild) to write installers . As well following is the tentative algorithm for my install sheild
1. Create a home dir for the tool and put all the application files in tht.
2. Installing a 3rd party jar and make a home for it.
3. Option for user to select the features(i hv 2 features. user can either select both or select individual feature) to be installed.
4. Select the appserver home if any. On selection i hv to update the classpath in the startup batch file for the application(This is the toughest step i beleive bcoz each appserver have different folder structures and different startup batch files).Tried obtaining the output using SQL and the result is as follows:
SQL> WITH T AS
2 (
3 SELECT 1 COL1 FROM DUAL
4 UNION
5 SELECT 2 COL1 FROM DUAL
6 UNION
7 SELECT 3 COL1 FROM DUAL
8 UNION
9 SELECT 4 COL1 FROM DUAL
10 UNION
11 SELECT 5 COL1 FROM DUAL
12 UNION
13 SELECT 8 COL1 FROM DUAL
14 UNION
15 SELECT 9 COL1 FROM DUAL
16 UNION
17 SELECT 10 COL1 FROM DUAL
18 UNION
19 SELECT 13 COL1 FROM DUAL
20 UNION
21 SELECT 14 COL1 FROM DUAL
22 UNION
23 SELECT 15 COL1 FROM DUAL
24 UNION
25 SELECT 16 COL1 FROM DUAL
26 UNION
27 SELECT 23 COL1 FROM DUAL
28 UNION
29 SELECT 24 COL1 FROM DUAL
30 )
31 SELECT OUTPUT FROM
32 (
33 SELECT DECODE(COL3,NULL,COL1, COL2) || '-' || LEAD(DECODE(COL3,NULL,COL3, COL1)) OVER (ORDER BY DECODE(COL3,NULL,COL1, COL2)) OUTPUT FROM
34 (
35 SELECT COL1, LEAD(COL1) OVER (ORDER BY COL1) COL2, LAG(COL1) OVER (ORDER BY COL1) COL3 FROM T
36 )
37 WHERE
38 (COL2 - COL1 > 1 OR COL2 IS NULL OR COL3 IS NULL)
39 )
40 WHERE OUTPUT != '-';
OUTPUT
1-5
8-10
13-16
23-24 -
Help needed in writing a procedure
Guys, i need some more help.
I am selecting one value using select by passing a parameter to that select statement which are stored in a file using utl_file package.
Now, I want to use the output of that query and use that value to update a column in the same table.
for ex:-
select comm from emp where empno = &empno1;
I want to use the comm value and update the comm value.
update emp
set comm = comm + 10
where empno = &empno1
Help Appreciated
ThanksSQL> desc emp
Name Null? Type
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
NET_SALARY NUMBER(12,2)
SQL> select salary,COMMISSION_PCT,net_salary from emp where employee_id = 198;
SALARY COMMISSION_PCT NET_SALARY
2600 .1
SQL> update emp
2 set net_salary = salary + (select COMMISSION_PCT from emp where employee_id = &&empno)*salary
3 where employee_id = &&empno
4 /
Enter value for empno: 198
old 2: set net_salary = salary + (select COMMISSION_PCT from emp where employee_id = &&empno)*salary
new 2: set net_salary = salary + (select COMMISSION_PCT from emp where employee_id = 198)*salary
old 3: where employee_id = &&empno
new 3: where employee_id = 198
1 row updated.
SQL> select salary,COMMISSION_PCT,net_salary from emp where employee_id = 198;
SALARY COMMISSION_PCT NET_SALARY
2600 .1 2860
Hope this helps;
Maybe you are looking for
-
DOC ID / Links of Custom Declaration PDF-Documents
Hi folks, we're receiving PDF Documents from the Customs which are being archived using KPRO and ArchiveLink customizing ... Now we're unable to find any entries (like DOC ID) we need e.g. to find the Documents using OAM1 in the table TOA01. In fact
-
Help: Error on SELECT INTO TABLE2 FROM TABLE AS E1 JOIN...
Can anyone help? I am getting an error in my sql statement below: SELECT E1.COL1, E1.COL2, E2.COL3, E1.COL4 INTO TABLE2 FROM TABLE AS E1 JOIN TABLE AS E2 ON (E1.COL1 = '10000' AND E2.COL1 = '20000') OR (E1.COL1 = '20000' AND E2.COL1 = '10000') WHERE
-
i'd appreciate if someone could tell me what format my videos have to be in in order for me to hear them.......and how to convert them to this format...
-
I uninstalled PSE 7 because I had a missing folder and wanted to reload to see if I could find it. I knew I had the program disc but I had forgotten that I had to have the packaging for the serial. I also have the same program on my laptop. Is there
-
i'd like to ask why when i debug a program at Eclipse in the console session and especially in the Problems tab shows the problems of all the programs? Do i make something wrong?? Im new at java and sorry if there are any mistake at my english... thn