Inner Join help req??Urgent!!!!!!!!!!!!!!!
I had written the below qery : its showing error that:for pooled tble,cluster tble,projection veiws join is not allowd : 'CDPOS'.
SELECT ekkoebeln cdhdrudate cdhdrtcode cdhdrtabname INTO CORRESPONDING FIELDS OF TABLE it_cdhdr
FROM ( ( ekko AS ekko INNER JOIN cdhdr AS cdhdr ON ekkoebeln = cdhdrobjectid )
INNER JOIN cdpos AS cdpos ON ekkoebeln = cdposobjectid )
WHERE ekko~ebeln = i_ebeln AND
ekko~frgke EQ 'R' AND
ekko~procstat EQ '05' AND
cdhdr~tcode IN ('ME29N' , 'ME28') AND
cdpos~tabname = 'EKKO'
GROUP BY ekko~ebeln
ekko~frgke
ekko~procstat
cdhdr~udate
cdhdr~tcode
cdpos~tabname.
so what shd i do,i need this table for the fetching data.
Plz tell me any way to solve this......its Urgent!!!!!!!!!!!!!!!!!!
Regards
Vipin
Hi Vipin,
U can't perform JOIN with Pooled or Cluster tables
And U can use only Internal table after FOR ALL ENTRIES <internal table>
Try to store whole data of CDPOS in the internal table and then use it..
See below links to get idea on how to work with cluster and pooled tables...
trying to join A018 and KONP .... here A018 is Pooled table... Look at below threads...
Re: abap query join A018/KONP
Can't perform join table
Hope it will solve your problem..
<b>Reward points if useful.</b>
Thanks & Regards
ilesh 24x7
Similar Messages
-
Hello Friends,
I am Debugging one report and I want to know the meaning of following Query, That what this querri is doing and what result will come, Please guide me as soon as possible.........
SELECT abudat bmatnr bwerks cmtart SUM( b~menge ) AS xmenge
INTO (budat, matnr, werks, mtart, menge)
FROM ( ( mkpf AS a INNER JOIN mseg AS b ON amblnr = bmblnr )
INNER JOIN mara AS c ON bmatnr = cmatnr )
WHERE a~budat IN p_budat
AND b~bwart = '101'
AND ( blgort = 'FGSL' )"OR blgort = 'JWSL' OR b~lgort = 'SCRL' )
AND a~mjahr = mjahr
GROUP BY abudat bmatnr bwerks cmtart
ORDER BY abudat bmatnr bwerks cmtart.
itab-budat = budat.
itab-matnr = matnr.
itab-werks = werks.
itab-mtart = mtart.
itab-menge = menge.
APPEND itab.
CLEAR: itab, budat, matnr, werks, mtart, menge.
ENDSELECT.Hi Friend,
Ohh! i will guide you to write in efficeien way:
1. SELECT data from MKPF, MSEG and MARA using inner join into an internal table. Where condition will be like as it is.
You can not use SUM(MENGE) use only MENGE
2. Use group by, order by with those clause on that internal table.
3. Loop that internal table and use AT END OF BUDAT. SUM. END AT it will sum as required. Within that AT END AT pass values to an work are like itab. APPEND itab.
Check the work are before appending, if you are not getting all value, pass to and local work area before AT.
\[removed by moderator\]
Regards
Krishnendu
Edited by: Jan Stallkamp on Jul 30, 2008 4:24 PM -
Asset aquisition report help req (urgent)
hi all,
in my following code there is a problem ie i am not getting all line items from
table ANLC & ANEK.
check the query whether there is any problem in the loop or query .
send me the modification for that or otherwise if u have devloped the code
for asset aquisition then send me that to my id- [email protected]
Report Z_FA_ACQ NO STANDARD PAGE HEADING
LINE-SIZE 400
LINE-COUNT 65(3).
TYPE-POOLS : SLIS.
TABLES : ANLA, "ASSET MASTER RECORD-SEGMENT
ANLZ. "time dependent asset allocations
DATA : BEGIN OF T_ANLA OCCURS 0,
BUKRS LIKE ANLA-BUKRS,
ANLN1 LIKE ANLA-ANLN1,
ANLN2 LIKE ANLA-ANLN2,
AKTIV LIKE ANLA-AKTIV,
TXT50 LIKE ANLA-TXT50,
ZUGDT LIKE ANLA-ZUGDT,
MENGE LIKE ANLA-MENGE,
MEINS LIKE ANLA-MEINS,
END OF T_ANLA.
DATA : BEGIN OF T_ANLZ OCCURS 0,
BUKRS LIKE ANLZ-BUKRS,
ANLN1 LIKE ANLZ-ANLN1,
ANLN2 LIKE ANLZ-ANLN2,
GSBER LIKE ANLZ-GSBER,
KOSTL LIKE ANLZ-KOSTL,
STORT LIKE ANLZ-STORT,
RAUMN LIKE ANLZ-RAUMN,
KFZKZ LIKE ANLZ-KFZKZ,
END OF T_ANLZ.
DATA : BEGIN OF T_ANEK OCCURS 0,
BUKRS LIKE ANEK-BUKRS,
ANLN1 LIKE ANEK-ANLN1,
ANLN2 LIKE ANEK-ANLN2,
BELNR LIKE ANEK-BELNR,
BUDAT LIKE ANEK-BUDAT,
XBLNR LIKE ANEK-XBLNR,
SGTXT LIKE ANEK-SGTXT,
END OF T_ANEK.
DATA : BEGIN OF T_ANLC OCCURS 0,
BUKRS LIKE ANLC-BUKRS,
ANLN1 LIKE ANLC-ANLN1,
ANLN2 LIKE ANLC-ANLN2,
KANSW LIKE ANLC-KANSW,
KNAFA LIKE ANLC-KNAFA,
AAFAP LIKE ANLC-AAFAP,
AFABE LIKE ANLC-AFABE,
GJAHR LIKE ANLC-GJAHR,
END OF T_ANLC.
DATA : BEGIN OF IT_FINAL OCCURS 0,
ANLN1 LIKE ANLA-ANLN1,
ANLN2 LIKE ANLA-ANLN2,
AKTIV LIKE ANLA-AKTIV,
TXT50 LIKE ANLA-TXT50,
ZUGDT LIKE ANLA-ZUGDT,
MENGE LIKE ANLA-MENGE,
MEINS LIKE ANLA-MEINS,
GSBER LIKE ANLZ-GSBER,
KOSTL LIKE ANLZ-KOSTL,
STORT LIKE ANLZ-STORT,
RAUMN LIKE ANLZ-RAUMN,
KFZKZ LIKE ANLZ-KFZKZ,
BELNR LIKE ANEK-BELNR,
BUDAT LIKE ANEK-BUDAT,
XBLNR LIKE ANEK-XBLNR,
SGTXT LIKE ANEK-SGTXT,
KANSW LIKE ANLC-KANSW,
KNAFA LIKE ANLC-KNAFA,
AAFAP LIKE ANLC-AAFAP,
GJAHR LIKE ANEK-GJAHR,
END OF IT_FINAL.
DATA : LINE_COLOR(4) TYPE C.
DATA : FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV.
SELECTION-SCREEN : BEGIN OF BLOCK B_FA WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_BUKRS FOR ANLA-BUKRS DEFAULT 'ML',
S_ANLN1 FOR ANLA-ANLN1,
S_ANLN2 FOR ANLA-ANLN2.
s_gjahr FOR anlc-gjahr.
SELECTION-SCREEN : END OF BLOCK B_FA.
*SELECT-OPTIONS : s_belnr FOR anek-belnr.
SELECT BUKRS ANLN1 ANLN2 AKTIV TXT50 ZUGDT MENGE MEINS
FROM ANLA
INTO CORRESPONDING FIELDS OF TABLE T_ANLA
WHERE ANLN1 IN S_ANLN1
AND ANLN2 IN S_ANLN2
AND BUKRS IN S_BUKRS.
SELECT BUKRS ANLN1 ANLN2 GSBER KOSTL STORT RAUMN KFZKZ
FROM ANLZ
INTO CORRESPONDING FIELDS OF TABLE T_ANLZ
FOR ALL ENTRIES IN T_ANLA
WHERE ANLN1 = T_ANLA-ANLN1
AND ANLN2 = T_ANLA-ANLN2
AND BUKRS = T_ANLA-BUKRS.
*IF sy-subrc EQ 0.
SELECT BUKRS ANLN1 ANLN2 BELNR BUDAT XBLNR SGTXT GJAHR
FROM ANEK
INTO CORRESPONDING FIELDS OF TABLE T_ANEK
FOR ALL ENTRIES IN T_ANLA
WHERE ANLN1 = T_ANLA-ANLN1
AND ANLN2 = T_ANLA-ANLN2
AND BUKRS = T_ANLA-BUKRS.
AND gjahr = t_anek-gjahr.
*ENDIF.
SELECT BUKRS ANLN1 ANLN2 KANSW KNAFA AAFAP AFABE GJAHR
FROM ANLC
INTO CORRESPONDING FIELDS OF TABLE T_ANLC
FOR ALL ENTRIES IN T_ANLA
WHERE ANLN1 = T_ANLA-ANLN1
AND ANLN2 = T_ANLA-ANLN2
AND BUKRS = T_ANLA-BUKRS
AND GJAHR = T_ANLC-GJAHR.
AND afabe = '01'.
LOOP AT T_ANLA.
MOVE : T_ANLA-ANLN1 TO IT_FINAL-ANLN1,
T_ANLA-ANLN2 TO IT_FINAL-ANLN2,
T_ANLA-AKTIV TO IT_FINAL-AKTIV,
T_ANLA-TXT50 TO IT_FINAL-TXT50,
T_ANLA-ZUGDT TO IT_FINAL-ZUGDT,
T_ANLA-MENGE TO IT_FINAL-MENGE,
T_ANLA-MEINS TO IT_FINAL-MEINS.
READ TABLE T_ANLZ WITH KEY BUKRS = T_ANLA-BUKRS
ANLN1 = T_ANLA-ANLN1
ANLN2 = T_ANLA-ANLN2 BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE : T_ANLZ-GSBER TO IT_FINAL-GSBER,
T_ANLZ-KOSTL TO IT_FINAL-KOSTL,
T_ANLZ-STORT TO IT_FINAL-STORT,
T_ANLZ-RAUMN TO IT_FINAL-RAUMN,
T_ANLZ-KFZKZ TO IT_FINAL-KFZKZ.
ENDIF.
READ TABLE T_ANLC WITH KEY BUKRS = T_ANLA-BUKRS
ANLN1 = T_ANLA-ANLN1
ANLN2 = T_ANLA-ANLN2 BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE : T_ANLC-KANSW TO IT_FINAL-KANSW,
T_ANLC-KNAFA TO IT_FINAL-KNAFA,
T_ANLC-AAFAP TO IT_FINAL-AAFAP.
ENDIF.
*SORT t_anla.
READ TABLE T_ANEK WITH KEY BUKRS = T_ANLA-BUKRS
ANLN1 = T_ANLA-ANLN1
ANLN2 = T_ANLA-ANLN2 BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE : T_ANEK-BELNR TO IT_FINAL-BELNR,
T_ANEK-BUDAT TO IT_FINAL-BUDAT,
T_ANEK-XBLNR TO IT_FINAL-XBLNR,
T_ANEK-SGTXT TO IT_FINAL-SGTXT.
ENDIF.
APPEND IT_FINAL.
*ENDLOOP.
ENDLOOP.
*ENDIF.
PERFORM BUILD_FIELDCATALOG.
PERFORM DISPLAY_ALV_REPORT.
PERFORM BUILD_LAYOUT.
FORM BUILD_FIELDCATALOG *
FORM BUILD_FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'ANLN1'.
FIELDCATALOG-SELTEXT_M = 'ASSET MAIN NO'.
FIELDCATALOG-COL_POS = 0.
FIELDCATALOG-OUTPUTLEN = 14.
FIELDCATALOG-EMPHASIZE = 'X'.
FIELDCATALOG-KEY = 'X'.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'ANLN2'.
FIELDCATALOG-SELTEXT_M = 'SUB NO'.
FIELDCATALOG-COL_POS = 1.
FIELDCATALOG-OUTPUTLEN = 7.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'AKTIV'.
FIELDCATALOG-SELTEXT_M = 'CAP.DATE'.
FIELDCATALOG-COL_POS = 2.
FIELDCATALOG-OUTPUTLEN = 10.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'TXT50'.
FIELDCATALOG-SELTEXT_M = 'NAME'.
FIELDCATALOG-COL_POS = 3.
FIELDCATALOG-OUTPUTLEN = 50.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'ZUGDT'.
FIELDCATALOG-SELTEXT_M = 'POSTING DATE'.
FIELDCATALOG-COL_POS = 4.
FIELDCATALOG-OUTPUTLEN = 10.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'MENGE'.
FIELDCATALOG-SELTEXT_M = 'QTY'.
FIELDCATALOG-COL_POS = 5.
FIELDCATALOG-OUTPUTLEN = 13.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'MEINS'.
FIELDCATALOG-SELTEXT_M = 'UNITS'.
FIELDCATALOG-COL_POS = 6.
FIELDCATALOG-OUTPUTLEN = 3.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'GSBER'.
FIELDCATALOG-SELTEXT_M = 'BA'.
FIELDCATALOG-COL_POS = 7.
FIELDCATALOG-OUTPUTLEN = 4.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'KOSTL'.
FIELDCATALOG-SELTEXT_M = 'COST CENTER'.
FIELDCATALOG-COL_POS = 8.
FIELDCATALOG-OUTPUTLEN = 13.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'STORT'.
FIELDCATALOG-SELTEXT_M = 'LOCATION'.
FIELDCATALOG-COL_POS = 9.
FIELDCATALOG-OUTPUTLEN = 10.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'RAUMN'.
FIELDCATALOG-SELTEXT_M = 'ROOM'.
FIELDCATALOG-COL_POS = 10.
FIELDCATALOG-OUTPUTLEN = 10.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'KFZKZ'.
FIELDCATALOG-SELTEXT_M = 'LICENSE PLATE NO'.
FIELDCATALOG-COL_POS = 11.
FIELDCATALOG-OUTPUTLEN = 20.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'BELNR'.
FIELDCATALOG-SELTEXT_M = 'DOC NO'.
FIELDCATALOG-COL_POS = 12.
FIELDCATALOG-OUTPUTLEN = 13.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'BUDAT'.
FIELDCATALOG-SELTEXT_M = 'POSTING DATE'.
FIELDCATALOG-COL_POS = 13.
FIELDCATALOG-OUTPUTLEN = 15.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'XBLNR'.
FIELDCATALOG-SELTEXT_M = 'REF NO'.
FIELDCATALOG-COL_POS = 14.
FIELDCATALOG-OUTPUTLEN = 25.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'SGTXT'.
FIELDCATALOG-SELTEXT_M = 'TEXT'.
FIELDCATALOG-COL_POS = 15.
FIELDCATALOG-OUTPUTLEN = 50.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
ENDFORM.
FORM BUILD_LAYOUT *
FORM BUILD_LAYOUT.
GD_LAYOUT-ZEBRA = 'X'.
GD_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
ENDFORM.
FORM DISPLAY_ALV_REPORT *
FORM DISPLAY_ALV_REPORT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = GD_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = ' '
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM.Hi Sanjeev,
I found out one small error in your code. While fetching from ANLC table
SELECT bukrs anln1 anln2 kansw knafa aafap afabe gjahr
FROM anlc
INTO CORRESPONDING FIELDS OF TABLE t_anlc
FOR ALL ENTRIES IN t_anla
WHERE anln1 = t_anla-anln1
AND anln2 = t_anla-anln2
AND bukrs = t_anla-bukrs
AND gjahr = t_anlc-gjahr.
<b>gjajr = t_anlc-gjahr</b>: here if you are fetching data into <b>t_anlc</b> for the first time, then how can you use it for selection also? this is my question. I commented and executed and i got the records fetched from ANLC table. -
hi all ,
i have to create a FM in which input parameter
should be
DOC DATE- ____________ to ______________________
means it should take input date in ranges
ex- 01.05.2007 to 31.05.2007
so how should i proceed for this.
Thanks
SanjeevHi,
if you do have only one intervall I would use two different exporting parameters like
DATE_FROM
DATE_TO
if it is a real range use it via TABLES
TABLES
EX_RANGE = [range] -
Urgent help please. Inner Join caused ora-00933 error
I ran this one , works fine:
SELECT DISTINCT EXP.EXP_ID,
EXP.DATU_EXP_WIRE_CENTER_CLLI,
EXP.DATU_EXP_IP,
EXP.DATU_EXP_CLLI,
EXP.DATU_EXP_PORT,
EXP.DATU_EXP_NAME,
EXP.DATU_EXP_CITY,
EXP.DATU_EXP_STATE,
EXP.DATU_EXP_SW_VERSION,
DECODE(LAST_ALARM.LAST_ALARM_DATE, NULL, TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),
TO_CHAR(LAST_ALARM.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS STATUS_DATE,
DECODE(LAST_ALARM.ALARM_NAME, NULL, 'Disconnected', LAST_ALARM.ALARM_NAME) AS DATU_STATUS,
DECODE(LAST_ALARM.ALARM_CLASS, NULL, 'OTHER', LAST_ALARM.ALARM_CLASS) AS IS_ERROR_STATUS,
DECODE(LAST_RESOURCE.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_RESOURCE.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS RESOURCE_STATUS_DATE,
DECODE(LAST_RESOURCE.RESOURCE_CODE_NAME, NULL, '', LAST_RESOURCE.RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
DECODE(LAST_RESOURCE.RESOURCE_CODE_CLASS, NULL, '', LAST_RESOURCE.RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
DECODE(LAST_OPER.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_OPER.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS OPER_STATUS_DATE,
DECODE(LAST_OPER.OPER_CODE_NAME, NULL, '', LAST_OPER.OPER_CODE_NAME) AS OPER_STATUS,
DECODE(LAST_OPER.OPER_CODE_CLASS, NULL, '', LAST_OPER.OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,
EXP.BEGIN_MAINT_WINDOW, RTU.RTU_NAME
FROM TT_DATU_EXP_UNIT_INFO EXP
left outer join
( SELECT distinct alarmed_datus.EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS, alarmed_datus.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID ) alarmed_datus
inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus.EXP_ID AND b.ALARM_TIME = alarmed_datus.LAST_ALARM_DATE
inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE
) LAST_ALARM on EXP.EXP_ID = LAST_ALARM.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE
) LAST_RESOURCE on EXP.EXP_ID = LAST_RESOURCE.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(OPER_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE) LAST_OPER on EXP.EXP_ID = LAST_OPER.EXP_ID
inner join TT_DATU_LRN_MAP LRNS on EXP.EXP_ID = LRNS.EXP_ID AND TRIM(LRNS.LRN) LIKE p_LRN
inner join TT_RTU_TYPES RTU ON EXP.RTU_TYPE_ID = RTU.RTU_TYPE_ID
WHERE NOT EXISTS (SELECT SATELLITE_EXP_ID FROM TT_HOST_SATELLITE WHERE EXP.EXP_ID = SATELLITE_EXP_ID)
AND EXP.IS_PRIMARY_ADDRESS LIKE p_isPrimary;
ELSE
OPEN v_cursor FOR
SELECT EXP.EXP_ID,
EXP.DATU_EXP_WIRE_CENTER_CLLI,
EXP.DATU_EXP_IP,
EXP.DATU_EXP_CLLI,
EXP.DATU_EXP_PORT,
EXP.DATU_EXP_NAME,
EXP.DATU_EXP_CITY,
EXP.DATU_EXP_STATE,
EXP.DATU_EXP_SW_VERSION,
DECODE(LAST_ALARM.LAST_ALARM_DATE, NULL, TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'), TO_CHAR(LAST_ALARM.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS STATUS_DATE,
DECODE(LAST_ALARM.ALARM_NAME, NULL, 'Disconnected', LAST_ALARM.ALARM_NAME) AS DATU_STATUS,
DECODE(LAST_ALARM.ALARM_CLASS, NULL, 'OTHER', LAST_ALARM.ALARM_CLASS) AS IS_ERROR_STATUS,
DECODE(LAST_RESOURCE.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_RESOURCE.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS RESOURCE_STATUS_DATE,
DECODE(LAST_RESOURCE.RESOURCE_CODE_NAME, NULL, '', LAST_RESOURCE.RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
DECODE(LAST_RESOURCE.RESOURCE_CODE_CLASS, NULL, '', LAST_RESOURCE.RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
DECODE(LAST_OPER.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_OPER.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS OPER_STATUS_DATE,
DECODE(LAST_OPER.OPER_CODE_NAME, NULL, '', LAST_OPER.OPER_CODE_NAME) AS OPER_STATUS,
DECODE(LAST_OPER.OPER_CODE_CLASS, NULL, '', LAST_OPER.OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,
EXP.BEGIN_MAINT_WINDOW, RTU.RTU_NAME
FROM TT_DATU_EXP_UNIT_INFO EXP
left outer join (
SELECT distinct alarmed_datus.EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS, alarmed_datus.LAST_ALARM_DATE
FROM (SELECT EXP_ID, MAX(ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID ) alarmed_datus
inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus.EXP_ID AND b.ALARM_TIME = alarmed_datus.LAST_ALARM_DATE
inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE )
LAST_ALARM on EXP.EXP_ID = LAST_ALARM.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE) LAST_RESOURCE on EXP.EXP_ID = LAST_RESOURCE.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(OPER_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
) LAST_OPER on EXP.EXP_ID = LAST_OPER.EXP_ID ORDER BY EXP.DATU_EXP_CLLI
inner join TT_RTU_TYPES RTU ON EXP.RTU_TYPE_ID = RTU.RTU_TYPE_ID
WHERE NOT EXISTS (SELECT SATELLITE_EXP_ID FROM TT_HOST_SATELLITE WHERE EXP.EXP_ID = SATELLITE_EXP_ID) AND EXP.IS_PRIMARY_ADDRESS like
p_isPrimary;
However this one:
SELECT EXP.EXP_ID,
EXP.DATU_EXP_WIRE_CENTER_CLLI,
EXP.DATU_EXP_IP,
EXP.DATU_EXP_CLLI,
EXP.DATU_EXP_PORT,
EXP.DATU_EXP_NAME,
EXP.DATU_EXP_CITY,
EXP.DATU_EXP_STATE,
EXP.DATU_EXP_SW_VERSION,
DECODE(LAST_ALARM.LAST_ALARM_DATE, NULL, TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),
TO_CHAR(LAST_ALARM.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS STATUS_DATE,
DECODE(LAST_ALARM.ALARM_NAME, NULL, 'Disconnected', LAST_ALARM.ALARM_NAME) AS DATU_STATUS,
DECODE(LAST_ALARM.ALARM_CLASS, NULL, 'OTHER', LAST_ALARM.ALARM_CLASS) AS IS_ERROR_STATUS,
DECODE(LAST_RESOURCE.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_RESOURCE.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS RESOURCE_STATUS_DATE,
DECODE(LAST_RESOURCE.RESOURCE_CODE_NAME, NULL, '', LAST_RESOURCE.RESOURCE_CODE_NAME) AS RESOURCE_STATUS,
DECODE(LAST_RESOURCE.RESOURCE_CODE_CLASS, NULL, '', LAST_RESOURCE.RESOURCE_CODE_CLASS) AS IS_RESOURCE_ERROR_STATUS,
DECODE(LAST_OPER.LAST_ALARM_DATE, NULL, '', TO_CHAR(LAST_OPER.LAST_ALARM_DATE,'YYYY/MM/DD HH24:MI:SS')) AS OPER_STATUS_DATE,
DECODE(LAST_OPER.OPER_CODE_NAME, NULL, '', LAST_OPER.OPER_CODE_NAME) AS OPER_STATUS,
DECODE(LAST_OPER.OPER_CODE_CLASS, NULL, '', LAST_OPER.OPER_CODE_CLASS) AS IS_OPER_ERROR_STATUS,
EXP.BEGIN_MAINT_WINDOW, RTU.RTU_NAME
FROM TT_DATU_EXP_UNIT_INFO EXP
left outer join
SELECT distinct alarmed_datus.EXP_ID, c.ALARM_NAME, c.ALARM_TYPE, c.ALARM_CLASS, alarmed_datus.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(ALARM_TIME) AS LAST_ALARM_DATE FROM TT_DATU_EXP_ALARM_INFO GROUP BY EXP_ID) alarmed_datus
inner join TT_DATU_EXP_ALARM_INFO b on b.EXP_ID = alarmed_datus.EXP_ID AND b.ALARM_TIME = alarmed_datus.LAST_ALARM_DATE
inner join TT_DATU_EXP_ALARM_TYPES c on b.ALARM_TYPE = c.ALARM_TYPE ) LAST_ALARM on EXP.EXP_ID = LAST_ALARM.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.RESOURCE_CODE_NAME, c.RESOURCE_CODE_TYPE, c.RESOURCE_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(RESOURCE_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_RESOURCE_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_RESOURCE_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.RESOURCE_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_RESOURCECODE_TYPES c on b.RESOURCE_CODE_TYPE = c.RESOURCE_CODE_TYPE) LAST_RESOURCE on EXP.EXP_ID = LAST_RESOURCE.EXP_ID
left outer join
( SELECT distinct a.EXP_ID, c.OPER_CODE_NAME, c.OPER_CODE_TYPE, c.OPER_CODE_CLASS, a.LAST_ALARM_DATE
FROM ( SELECT EXP_ID, MAX(OPER_CODE_TIME) AS LAST_ALARM_DATE
FROM TT_DATU_EXP_OPER_CODE_INFO GROUP BY EXP_ID ) a
inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
) LAST_OPER on EXP.EXP_ID = LAST_OPER.EXP_ID ORDER BY EXP.DATU_EXP_CLLI
inner join TT_RTU_TYPES RTU ON EXP.RTU_TYPE_ID = RTU.RTU_TYPE_ID
WHERE EXP.IS_PRIMARY_ADDRESS like p_isPrimary;
this one not work kept giving me errors:
[ ORA-00933: SQL command not properly ended
Any guru can help? I need to have this resolved end of today.
Thanks in advance.Hi,
Never write, let alone post, unformatted code.
Indent the code so that it's easy to set the scope of sub-queries, and the majoc clauses (SELECT, FROM, WHERE, ORDER BY, ...) in each.
When posting any formatted text on this site, type these 6 characters:
\(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
If you do that to the code you posted, you'll see that it ends like this:... inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID
AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
) LAST_OPER on EXP.EXP_ID = LAST_OPER.EXP_ID
ORDER BY EXP.DATU_EXP_CLLI
inner join TT_RTU_TYPES RTU ON EXP.RTU_TYPE_ID = RTU.RTU_TYPE_ID
WHERE EXP.IS_PRIMARY_ADDRESS like p_isPrimary
You can't put an ORDER BY clause in the middle of the FROM clause.
The ORDER BY clause always goes after the WHERE clause, like this:... inner join TT_DATU_EXP_OPER_CODE_INFO b on b.EXP_ID = a.EXP_ID
AND b.OPER_CODE_TIME = a.LAST_ALARM_DATE
inner join TT_DATU_EXP_OPER_CODE_TYPES c on b.OPER_CODE_TYPE = c.OPER_CODE_TYPE
) LAST_OPER on EXP.EXP_ID = LAST_OPER.EXP_ID
inner join TT_RTU_TYPES RTU ON EXP.RTU_TYPE_ID = RTU.RTU_TYPE_ID
WHERE EXP.IS_PRIMARY_ADDRESS like p_isPrimary
ORDER BY EXP.DATU_EXP_CLLI -
Urgent: Regarding Inner join relation b/w MSEG, MKPF, MARA and MAKT
I have written o code like below for inner join. However, The program has take much more time to give out put. Could any one please correct the below inner join statement. Its very urgent.
Thanks for your help.
SELECT mseg~mblnr
mseg~matnr
mseg~werks
mseg~charg
mseg~lifnr
mseg~bualt
mseg~erfmg
mseg~ebeln
mseg~ebelp
mkpf~budat
mara~zzshelf_life
makt~maktx
FROM mseg
INNER JOIN mkpf
ON mkpfmblnr EQ msegmblnr
INNER JOIN mara
ON msegmatnr EQ maramatnr
INNER JOIN makt
ON maramatnr EQ maktmatnr
INTO TABLE gt_mat_doc
WHERE mseg~matnr IN s_matnr
AND mseg~werks IN s_werks
AND mseg~lifnr IN s_lifnr
AND mseg~bwart EQ p_bwart
AND ( msegebeln NE ' ' AND msegebeln IN s_ebeln )
AND mkpf~budat IN s_budat
AND mara~mtart IN s_mtart
AND makt~spras EQ sy-langu.Hi,
Do like this
Types: begin of ty_mesg_mkpf,
mblnr type mseg-mblnr,
matnr type mseg-matnr,
werks type mseg-werks,
charg type mseg-charg,
lifnr type mseg-lifnr,
bualt type mseg-bualt,
erfmg type mseg-erfmg,
ebeln type mseg-ebeln,
ebelp type mseg-ebelp,
budat type mkpf-budat,
end of ty_mseg_mkpf,
Begin og ty_mara_makt,
matnr type mara-matnr,
zzshelf_life type mara-zzshelf_life,
maktx type makt-maktx,
end of ty_mara_makt.
Data: it_mseg_mkpf type table of ty_mseg_mkpf,
wa_mseg_mkpf type ty_mseg_mkpf,
it_mara_makt type table of ty_mara_makt,
wa_mara_makt type ty_mara_makt.
SELECT m1~mblnr
m1~matnr
m1~werks
m1~charg
m1~lifnr
m1~bualt
m1~erfmg
m1~ebeln
m1~ebelp
m2~budat
FROM mseg
INTO TABLE it_mseg_mkpf
INNER JOIN mkpf
ON m1mblnr EQ m2mblnr
WHERE m1~matnr IN s_matnr
AND m1~werks IN s_werks
AND m1~lifnr IN s_lifnr
AND m1~bwart EQ p_bwart
AND ( m1ebeln NE ' ' AND m1ebeln IN s_ebeln )
AND m2~budat IN s_budat
if sy-subrc = 0.
Select m3~matnr
m3~zzshelf_life
m4~maktx from mara as m3
INNER JOIN makt as m4
ON m3matnr EQ m4matnr
INTO TABLE it_mara_makt
where m3~mtart IN s_mtart
AND m4~spras EQ sy-langu.
endif.
loop at it_mseg_mkpf into wa_mseg_mkpf.
Move necessary field values from wa_mseg_mkpf to wa_mat_doc.
Read table it_mara_makt into wa_mara_makt with key matnr = wa_mseg_mkpf-matnr.
if sy-subrc = 0.
move remaining field values to wa_mat_doc.
append wa_mat_doc to gt_mat_doc.
clear wa_mat_doc.
endif.
endloop.
Regards,
Satish -
Help needed in rewriting the code using inner joins
Hi all,
I need help in rewriting this code
DATA : FLD LIKE ZTABLE-ZFLD,
FLD1 LIKE ZTABLE2-ZFLD2.
select single ZFLD from zTABLE1 into FLD
where MATNR = '123' and
werks = 'ABC'.
select single ZFLD1 from zTABLE2 into FLD1
where zFLD = FLD.
iS there way that we can write this with inner joins
ThanksHi,
help me out
TABLE 1 HAS
MATNR , WERKS , FLD1.
TABLE 2 HAS
FLD1, FLD2.
I KNOW MATNR AND WERKS BASED ON THAT I HAVE TO GET FLD2
I WANT IT BE WRITTEN WITH INNEWR JOINS
WITH FOLLOWING COD E I GET AN ERROR MESSAGE SAYING
comma without preccing colon (after select?)
data : FLD1 like zTABLE1-ZFLD1.
data : FLD2 like ZTABLE2-ZFLD2.
SELECT FZFLD1 BZFLD2
INTO ( FLD1, FLD2)
FROM ZTABLE1 AS F INNER JOIN ZTABLE2 AS B
ON FZFLD1 = BFLD2
WHERE F~MATNR = '123'
AND F~WERKS = 'ABC' .
Thanks -
Help with Inner Join query in SQL
Hope someone can help with this, as this is quite an involved project for me, and I'm just about there with it.
My table structure is :
table_packages
packageID
package
packageDetails
etc
table_destinations
destinationID
destination
destinationDetails
etc
table_packagedestinations
packageID
destinationID
..so nothing that complicated.
So the idea is that I can have a package details page which shows the details of the package, along any destinations linked to that package via the packagedestinations table.
So this is the last part really - to get the page to display the destinations, but I'm missing something along the way....
This is the PHP from the header, including my INNER JOIN query....
PHP Code:
<?php
$ParampackageID_WADApackages = "-1";
if (isset($_GET['packageID'])) {
$ParampackageID_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
$ParamSessionpackageID_WADApackages = "-1";
if (isset($_SESSION['WADA_Insert_packages'])) {
$ParamSessionpackageID_WADApackages = (get_magic_quotes_gpc()) ? $_SESSION['WADA_Insert_packages'] : addslashes($_SESSION['WADA_Insert_packages']);
$ParampackageID2_WADApackages = "-1";
if (isset($_GET['packageID'])) {
$ParampackageID2_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
mysql_select_db($database_connPackages, $connPackages);
$query_WADApackages = sprintf("SELECT packageID, package, costperpax, duration, baselocation, category, dateadded, agerange, hotel, educational_tours, field_trips, corporate_outings, plant_visits, budget_package, rollingtours, teambuilding, description, offer FROM packages WHERE packageID = %s OR ( -1= %s AND packageID= %s)", GetSQLValueString($ParampackageID_WADApackages, "int"),GetSQLValueString($ParampackageID2_WADApackages, "int"),GetSQLValueString($ParamSessionpackageID_WADApackages, "int"));
$WADApackages = mysql_query($query_WADApackages, $connPackages) or die(mysql_error());
$row_WADApackages = mysql_fetch_assoc($WADApackages);
$totalRows_WADApackages = mysql_num_rows($WADApackages);
$colname_educationalDestinations = "1";
if (isset($_GET['PackageID'])) {
$colname_educationalDestinations = (get_magic_quotes_gpc()) ? packageID : addslashes(packageID);
mysql_select_db($database_connPackages, $connPackages);
$query_educationalDestinations = sprintf("SELECT * FROM destinations INNER JOIN (packages INNER JOIN packagedestinations ON packages.packageID = packagedestinations.packageID) ON destinations.destinationID = packagedestinations.destinationID WHERE packages.packageID = %s ORDER BY destination ASC", GetSQLValueString($colname_educationalDestinations, "int"));
$educationalDestinations = mysql_query($query_educationalDestinations, $connPackages) or die(mysql_error());
$row_educationalDestinations = mysql_fetch_assoc($educationalDestinations);
$totalRows_educationalDestinations = mysql_num_rows($educationalDestinations);
?>
And where I'm trying to display the destinations themselves, I have :
<table>
<tr>
<td>Destinations :</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_educationalDestinations['destination']; ?></td>
</tr>
<?php } while ($row_educationalDestinations = mysql_fetch_assoc($educationalDestinations)); ?>
</table>
If anyone could have a quick look and help me out that would be much appreciated - not sure if its my SQL at the top, or the PHP in the page, but either way it would be good to get it working.
Thanks.First off, you need to get the database tables so that there is a relationship between them.
In fact, if there is a one to one relationship, then it may be better to store all of your information in one table such as
table_packages
packageID
package
packageDetails
destination
destinationDetails
etc
If there is a one to many relationship, then the following would be true
packages
packageID
package
packageDetails
etc
destinations
destinationID
packageID
destination
destinationDetails
etc
The above assumes that there are many destinations to one package with the relationship coloured orange.
Once you have the above correct you can apply your query as follows
SELECT *
FROM packages
INNER JOIN destinations
ON packages.packageID = destinations.packageID
WHERE packages.packageID = %s
ORDER BY destination ASC
The above query will show all packages with relevant destinations -
Hi ABAPers,
I was trying to develop a report for which query is something like this.
*& Report ZT_SERIAL
REPORT ZT_SERIAL.
TABLES : SER01,SER03,OBJK,LIKP,LIPS. " LIKP - SD invoice header table, LIPS - SD invoice details table
TYPE-POOLS: SLIS.
DATA: AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
MANDATORY WHILE DECLARING ALV ***
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV..
DATA: V_EVENTS TYPE SLIS_T_EVENT.
DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
DATA: I_TITLE_SL_NO_TRACK TYPE LVC_TITLE VALUE 'SERIAL NO TRACKER'.
DATA : BEGIN OF ITAB OCCURS 0,
OBKNR LIKE OBJK-OBKNR, "OBJECT LIST
OBZAE LIKE OBJK-OBZAE, "OBJECT COUNTER
KUNDE LIKE SER01-KUNDE, "CUSTOMER NO
MATNR LIKE OBJK-MATNR, "PART NO
SERNR LIKE OBJK-SERNR, "SERIAL NO
MBLNR LIKE SER03-MBLNR, "GRN/MATERIAL DOC NO
LIEF_NR LIKE SER01-LIEF_NR,"OUTBOUND DELV NO
DATUM LIKE SER01-DATUM, "OUTBOUND DELV DATE
TASER LIKE OBJK-TASER, "HEADER TABLE
ANZSN LIKE SER01-ANZSN, "NO OF SERIAL NOS
VGBEL LIKE LIPS-VGBEL, "SALES ORDER NO
END OF ITAB.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_KUNDE FOR SER01-KUNDE,
S_VGBEL FOR LIPS-VGBEL,
S_MATNR FOR OBJK-MATNR,
S_SERNR FOR OBJK-SERNR,
S_MBLNR FOR SER03-MBLNR,
S_LIFNR FOR SER01-LIEF_NR,
S_DATUM FOR SER01-DATUM.
SELECTION-SCREEN : END OF BLOCK B1.
PERFORM TRACKING.
PERFORM FLDCAT.
PERFORM BUILD_LAYOUT.
***CALL FUNCTION TO DISPLAY IN ALV FORMAT*******
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_GRID_TITLE = I_TITLE_SL_NO_TRACK
IS_LAYOUT = LAYOUT
IT_FIELDCAT = P_FIELDTAB[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = ITAB.
***END OF CALL FUNCTION
FORM TRACKING.
SELECT OBJKOBKNR OBJKOBZAE OBJKMATNR OBJKSERNR OBJK~TASER
SER01KUNDE SER01LIEF_NR SER01DATUM SER01ANZSN
SER03~MBLNR
LIPS~VGBEL
INTO TABLE ITAB FROM OBJK
INNER JOIN SER01 ON OBJKOBKNR = SER01OBKNR
INNER JOIN SER03 ON OBJKOBKNR = SER03OBKNR
INNER JOIN LIPS ON SER01LIEF_NR = LIPSVBELN
WHERE
OBJKTASER = 'SER01' OR OBJKTASER = 'SER03'.
OBJK~MATNR IN S_MATNR AND
OBJK~SERNR IN S_SERNR AND
SER01~KUNDE IN S_KUNDE AND
SER01~LIEF_NR IN S_LIFNR AND
SER01~DATUM IN S_DATUM AND
SER03~MBLNR IN S_MBLNR AND
LIPS~VGBEL IN S_VGBEL.
ENDFORM.
*& Form fldcat
text
FORM FLDCAT.
PERFORM FLDCAT1 USING 'KUNDE' 'Customer No'.
PERFORM FLDCAT1 USING 'VGBEL' 'Sales Order No'.
PERFORM FLDCAT1 USING 'MATNR' 'Tejas Part No'.
PERFORM FLDCAT1 USING 'SERNR' 'Serial No'.
PERFORM FLDCAT1 USING 'MBLNR' 'Material Doc No'.
PERFORM FLDCAT1 USING 'LIEF_NR' 'Outbound Delv No'.
PERFORM FLDCAT1 USING 'DATUM' 'Outbound Delv Date'.
ENDFORM. "fldcat
*& Form fldcat1
text
-->FNAM text
-->FTEXT text
FORM FLDCAT1 USING FNAM FTEXT.
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
L_FIELDCAT-FIELDNAME = FNAM.
L_FIELDCAT-SELTEXT_M = FTEXT.
IF FNAM EQ 'MATNR'."OR fnam EQ 'PKUNAG'.
L_FIELDCAT-KEY = 'X'.
ENDIF.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
APPEND L_FIELDCAT TO P_FIELDTAB.
CLEAR fldcat1.
ENDFORM. "fldcat1
*& Form build_layout
text
FORM BUILD_LAYOUT .
LAYOUT-NO_INPUT = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-ZEBRA = 'X'.
LAYOUT-TOTALS_TEXT = 'Totals'(256).
layout-coltab_fieldname = 'CELL_COLOUR'.
*clear layout.
ENDFORM.
But when I run this query,the program gets terminated.Can you please help me in rectifying the query and generate the output?
Thanks in advance
BhavinHi
I have corrected the code please copy and past it and then try.
Report ZT_SERIAL.
TABLES : SER01,SER03,OBJK,LIKP,LIPS.
" LIKP - SD invoice header table, LIPS - SD invoice details table
TYPE-POOLS: SLIS.
DATA: AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
+ MANDATORY WHILE DECLARING ALV ***
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV..
DATA: V_EVENTS TYPE SLIS_T_EVENT.
DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
DATA: I_TITLE_SL_NO_TRACK TYPE LVC_TITLE VALUE 'SERIAL NO TRACKER'.
DATA : BEGIN OF ITAB OCCURS 0,
OBKNR LIKE OBJK-OBKNR, "OBJECT LIST
OBZAE LIKE OBJK-OBZAE, "OBJECT COUNTER
KUNDE LIKE SER01-KUNDE, "CUSTOMER NO
MATNR LIKE OBJK-MATNR, "PART NO
SERNR LIKE OBJK-SERNR, "SERIAL NO
MBLNR LIKE SER03-MBLNR, "GRN/MATERIAL DOC NO
LIEF_NR LIKE SER01-LIEF_NR,"OUTBOUND DELV NO
DATUM LIKE SER01-DATUM, "OUTBOUND DELV DATE
TASER LIKE OBJK-TASER, "HEADER TABLE
ANZSN LIKE SER01-ANZSN, "NO OF SERIAL NOS
VGBEL LIKE LIPS-VGBEL, "SALES ORDER NO
END OF ITAB.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_KUNDE FOR SER01-KUNDE,
S_VGBEL FOR LIPS-VGBEL,
S_MATNR FOR OBJK-MATNR,
S_SERNR FOR OBJK-SERNR,
S_MBLNR FOR SER03-MBLNR,
S_LIFNR FOR SER01-LIEF_NR,
S_DATUM FOR SER01-DATUM.
SELECTION-SCREEN : END OF BLOCK B1.
PERFORM TRACKING.
PERFORM FLDCAT.
PERFORM BUILD_LAYOUT.
***CALL FUNCTION TO DISPLAY IN ALV FORMAT*******
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_GRID_TITLE = I_TITLE_SL_NO_TRACK
IS_LAYOUT = LAYOUT
IT_FIELDCAT = P_FIELDTAB[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = ITAB.
***END OF CALL FUNCTION
FORM TRACKING.
*SELECT OBJK~OBKNR
OBJK~OBZAE
OBJK~MATNR
OBJK~SERNR
OBJK~TASER
SER01~KUNDE
SER01~LIEF_NR
SER01~DATUM
SER01~ANZSN
SER03~MBLNR
LIPS~VGBEL
INTO TABLE ITAB FROM OBJK
INNER JOIN SER01 ON OBJKOBKNR = SER01OBKNR
INNER JOIN SER03 ON OBJKOBKNR = SER03OBKNR
INNER JOIN LIPS ON SER01LIEF_NR = LIPSVBELN
WHERE
*( OBJKTASER = 'SER01' OR OBJKTASER = 'SER03' ) and
*OBJK-MATNR IN S_MATNR AND
*OBJK~SERNR IN S_SERNR AND
*SER01~KUNDE IN S_KUNDE AND
*SER01~LIEF_NR IN S_LIFNR AND
*SER01~DATUM IN S_DATUM AND
*SER03~MBLNR IN S_MBLNR AND
*LIPS~VGBEL IN S_VGBEL.
SELECT a~OBKNR "OBJK
a~OBZAE
a~MATNR
a~SERNR
a~TASER
b~KUNDE "SER01
b~LIEF_NR
b~DATUM
b~ANZSN
c~MBLNR "SER03
D~VGBEL "LIPS
INTO TABLE ITAB FROM ( OBJK as a
INNER JOIN SER01 as b ON aOBKNR = bOBKNR
INNER JOIN SER03 as c ON aOBKNR = cOBKNR
INNER JOIN LIPS as d ON bLIEF_NR = dVBELN )
WHERE
( aTASER = 'SER01' OR aTASER = 'SER03' ) and
a~MATNR IN S_MATNR AND
a~SERNR IN S_SERNR AND
b~KUNDE IN S_KUNDE AND
b~LIEF_NR IN S_LIFNR AND
b~DATUM IN S_DATUM AND
c~MBLNR IN S_MBLNR AND
d~VGBEL IN S_VGBEL.
ENDFORM.
*& Form fldcat
* text
FORM FLDCAT.
PERFORM FLDCAT1 USING 'KUNDE' 'Customer No'.
PERFORM FLDCAT1 USING 'VGBEL' 'Sales Order No'.
PERFORM FLDCAT1 USING 'MATNR' 'Tejas Part No'.
PERFORM FLDCAT1 USING 'SERNR' 'Serial No'.
PERFORM FLDCAT1 USING 'MBLNR' 'Material Doc No'.
PERFORM FLDCAT1 USING 'LIEF_NR' 'Outbound Delv No'.
PERFORM FLDCAT1 USING 'DATUM' 'Outbound Delv Date'.
ENDFORM. "fldcat
*& Form fldcat1
text
-->FNAM text
-->FTEXT text
FORM FLDCAT1 USING FNAM FTEXT.
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
L_FIELDCAT-FIELDNAME = FNAM.
L_FIELDCAT-SELTEXT_M = FTEXT.
IF FNAM EQ 'MATNR'."OR fnam EQ 'PKUNAG'.
L_FIELDCAT-KEY = 'X'.
ENDIF.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
APPEND L_FIELDCAT TO P_FIELDTAB.
* CLEAR fldcat1.
ENDFORM. "fldcat1
*& Form build_layout
* text
FORM BUILD_LAYOUT .
LAYOUT-NO_INPUT = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-ZEBRA = 'X'.
LAYOUT-TOTALS_TEXT = 'Totals'(256).
* layout-coltab_fieldname = 'CELL_COLOUR'.
*clear layout.
ENDFORM.
Regards,
Venkat -
Need help with program for Inner join
Hello Experts,
I need to create a list from table sbook containing booking number (sbook-bookid), customer number (sbook-customid), customer name (scustom-name) , customer class (sbook-class) and ticket price (sflight-price). I am new to ABAP and am very confused I tried reading up some examples and came up with the attached program
Attached is my program for inner join
Kindly Help
Thanks SuHi Su K
You May use key fields , Foreign keys for joining , Here
SELECT SBOOK~BOOKID SBOOK~CUSTOMID SBOOK~CLASS
SCUSTOM~ID SCUSTOM~NAME FROM SFILGHT
INNER JOIN SBOOK ON SBOOK~CARRID EQ SFILGHT~CARRID
SBOOK~CONNID EQ SFILGHT~CONNID
SBOOK~FLDATE EQ SFILGHT~FLDATE
INNER JOIN SCUSTOM ON SCUSTOM~ID = SBOOK~ID -
Need help with inner join and distinct rows
Hey Guys,
i have
1) BaseEnv Table
2) Link Table
3) BaseData Table
Link table has three columns Id,BaseEnvId,BaseDataId
the BaseEnvID is unique in the table where as BaseDataId can be repeated i.e multile rows of BaseEnv Table can point to same BaseData table row
Now i want to do BaseEnvTable inner join Link Table inner join BaseData Table and select 5 columsn ; Name,SyncName,Version,PPO,DOM from the BaseData table.. the problem is that after i do the inner join I get duplciate records..
i want to eliminate the duplicate records , can any one help me herePlease post DDL, so that people do not have to guess what the keys, constraints, Declarative Referential Integrity, data types, etc. in your schema are. Learn how to follow ISO-11179 data element naming conventions and formatting rules. Temporal data should
use ISO-8601 formats. Code should be in Standard SQL as much as possible and not local dialect.
This is minimal polite behavior on SQL forums. Now we have to guess and type, guess and type, etc. because of your bad manners.
CREATE TABLE Base_Env
(base_env_id CHAR(10) NOT NULL PRIMARY KEY,
Think about the name Base_Data; do you have lots of tables without data? Silly, unh?
CREATE TABLE Base_Data
(base_data_id CHAR(10) NOT NULL PRIMARY KEY,
Your Links table is wrong in concept and implementation. The term “link” refers to a pointer chain structure used in network databases and makes no sense in RDBMS. There is no generic, magic, universal “id” in RDBMS! People that do this are called “id-iots”
in SQL slang.
We can model a particular relationship in a table by referencing the keys in other tables. But we need to know if the relationship is 1:1, 1:m, or n:m. This is the membership of the relationship. Your narrative implies this:
CREATE TABLE Links
(base_env_id CHAR(10) NOT NULL UNIQUE
REFERENCES Base_Env (base_env_id),
base_data_id CHAR(10) NOT NULL
REFERENCES Base_Data (base_data_id));
>> The base_env_id is unique in the table where as base_data_id can be repeated I.e multiple rows of Base_Env Table can point [sic] to same Base_Data table row. <<
Again, RDBMS has no pointers! We have referenced an referencing tables. This is a fundamental concept.
That narrative you posted has no ON clauses! And the narrative is also wrong. There is no generic “name”, etc. What tables were used in your non-query? Replace the ?? in this skeleton:
SELECT ??.something_name, ??.sync_name, ??.something_version,
??.ppo, ??.dom
FROM Base_Env AS E, Links AS L, Base_Data AS D
WHERE ?????????;
>> I want to eliminate the duplicate records [sic], can any one help me here?<<
Where is the sample data? Where is the results? Please read a book on RDBMS so you can post correct SQL and try again.
--CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
in Sets / Trees and Hierarchies in SQL -
Help with inner join PLEASE IGNORE
Hi I was doing a select with a subquery but I need that the where clause check to values so I couldn't get it so I decided to create a INNER JOIN
Before
insert into BPMTEMP (select * from ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1 where id_solicitud and accion not in (select (id_solicitud, accion) from ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1) and rownum <=200);but the problem with the inner join is that it doesn't accept me the external database source
insert into BPMTEMP (select ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1.*, ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1.*
from ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1
INNER JOIN ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1
ON [email protected]_solicitud = [email protected]_solicitud
ON [email protected] = [email protected]
AND rownum <=200); it shows an:
ORA-02084:
database name is missing a component
Cause: supplied database name cannot contain a leading '.', trailing '.' or '@', or two '.' or '@' in a row.
how can I solve this????
thanks for your help
Edited by: Diego Guillen on 29/12/2009 11:14 AMHi
Please remove the @dblink stuff in the column descrptions or use a table alias. This should help.
drop database link lokal;
create database link lokal
CONNECT TO whateveruserineed IDENTIFIED BY whateverthing
USING 'lokal11g';
select HR.COUNTRIES.* from HR.COUNTRIES@lokal;
select x.* from HR.COUNTRIES@lokal x;And as Dan Morgans says, pls. post you ? in the right forum next time :-))
Mette -
Help: Modifying inner join
Hello Folks,
I have an Access Query and am rewriting the whole query in Oracle to run a report.The thing is Am a beginner in oracle and am scratching my head on how to modify this inner join. please help me in rewriting this inner join in oracle. thanks a million
((Debtor INNER JOIN MAX_TRANS_DATE AS MAX_TRANS_DATE_1 ON Debtor .
EVENT_ID = MAX_TRANS_DATE_1.EVENT_ID) INNER JOIN
TMP$ALL_RECOVERY_TYPE
ON(Debtor . EVENT_CASE_ID = TMP$ALL_RECOVERY_TYPE . EVENT_CASE_ID) AND
(Debtor . EVENT_ID = TMP$ALL_RECOVERY_TYPE . EVENT_ID))
INNER JOIN CUBS TRANSACTIONS
ON (Debtor . EVENT_ID = CUBS TRANSACTIONS . EVENT_ID)
AND (Debtor . EVENT_CASE_ID = CUBS TRANSACTIONS . EVENT_CASE_ID)Thanks for getting back. But still am unable to get the correct data. I will try to break it down.
Microsoft Access Table MAX_TRANS_DATE menitoned above in the inner join was originally coming from table called TRANSACTIONS i.e.( MAX_TRANS_DATE = SELECT [Transactions].[EVENT_ID], Max([Transactions].[TRANSDATE]) AS MaxOfTRANSDATE
FROM Debtor INNER JOIN Transactions ON [Debtor].[EVENT_ID]=[Transactions].[EVENT_ID]
GROUP BY [Transactions].[EVENT_ID];
Here the problem is am recreating the access database query in oracle database and we dont have MAX_TRANS_DATE in the Oracle database but we do have TRANSACTIONS table.
So i just used TRANSACTIONS in the inner join instead of MAX_TRANS_DATE.
But the result is wrong.The Field Transdate from TRANSACTIONS is pulling dates as 10/5/2006 instead of 02/01/2010. I suspect something is wrong with the joins.Please help me. I can provide the old access query and the new oracle query that i have created.
Thanks
Edited by: user11961230 on Mar 5, 2010 11:49 AM -
i wanna add inner joins in my report,plz give me d link of websites which provide suitable example.. if u r having example of it den do tell me...
its really urgent...HI
SELECT - join
... [(] {dbtab_left [AS tabalias_left]} | join
{[INNER] JOIN}|{LEFT [OUTER] JOIN}
{dbtab_right [AS tabalias_right] ON join_cond} [)] ... .
The join syntax represents a recursively nestable join expression. A join expression consists of a left-hand and a right- hand side, which are joined either by means of [INNER] JOIN or LEFT [OUTER] JOIN. Depending on the type of join, a join expression can be either an inner (INNER) or an outer (LEFT OUTER) join. Every join expression can be enclosed in round brackets. If a join expression is used, the SELECT command circumvents SAP buffering.
On the left-hand side, either a single database table, a view dbtab_left, or a join expression join can be specified. On the right-hand side, a single database table or a view dbtab_right as well as join conditions join_cond can be specified after ON. In this way, a maximum of 24 join expressions that join 25 database tables or views with each other can be specified after FROM.
AS can be used to specify an alternative table name tabalias for each of the specified database table names or for every view. A database table or a view can occur multiple times within a join expression and, in this case, have various alternative names.
The syntax of the join conditions join_cond is the same as that of the sql_cond conditions after the addition WHERE, with the following differences:
At least one comparison must be specified after ON.
Individual comparisons may be joined using AND only.
All comparisons must contain a column in the database table or the view dbtab_right on the right-hand side as an operand.
The following additions not be used: NOT, LIKE, IN.
No sub-queries may be used.
For outer joins, only equality comparisons (=, EQ) are possible.
If an outer join occurs after FROM, the join condition of every join expression must contain at least one comparison between columns on the left-hand and the right-hand side.
In outer joins, all comparisons that contain columns as operands in the database table or the view dbtab_right on the right-hand side must be specified in the corresponding join condition. In the WHERE condition of the same SELECT command, these columns are not allowed as operands.
Resulting set for inner join
The inner join joins the columns of every selected line on the left- hand side with the columns of all lines on the right-hand side that jointly fulfil the join_cond condition. A line in the resulting set is created for every such line on the right-hand side. The content of the column on the left-hand side may be duplicated in this case. If none of the lines on the right-hand side fulfils the join_cond condition, no line is created in the resulting set.
Resulting set for outer join
The outer join basically creates the same resulting set as the inner join, with the difference that at least one line is created in the resulting set for every selected line on the left-hand side, even if no line on the right-hand side fulfils the join_cond condition. The columns on the right-hand side that do not fulfil the join_cond condition are filled with null values.
If the same column name occurs in several database tables in a join expression, they have to be identified in all remaining additions of the SELECT statement by using the column selector ~.
Example
Join the columns carrname, connid, fldate of the database tables scarr, spfli and sflight by means of two inner joins. A list is created of the flights from p_cityfr to p_cityto. Alternative names are used for every table.
PARAMETERS: p_cityfr TYPE spfli-cityfrom,
p_cityto TYPE spfli-cityto.
DATA: BEGIN OF wa,
fldate TYPE sflight-fldate,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
END OF wa.
DATA itab LIKE SORTED TABLE OF wa
WITH UNIQUE KEY fldate carrname connid.
SELECT ccarrname pconnid f~fldate
INTO CORRESPONDING FIELDS OF TABLE itab
FROM ( ( scarr AS c
INNER JOIN spfli AS p ON pcarrid = ccarrid
AND p~cityfrom = p_cityfr
AND p~cityto = p_cityto )
INNER JOIN sflight AS f ON fcarrid = pcarrid
AND fconnid = pconnid ).
LOOP AT itab INTO wa.
WRITE: / wa-fldate, wa-carrname, wa-connid.
ENDLOOP.
Example
Join the columns carrid, carrname and connid of the database tables scarr and spfli using an outer join. The column connid is set to the null value for all flights that do not fly from p_cityfr. This null value is then converted to the appropriate initial value when it is transferred to the assigned data object. The LOOP returns all airlines that do not fly from p_cityfr.
PARAMETERS p_cityfr TYPE spfli-cityfrom.
DATA: BEGIN OF wa,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
END OF wa,
itab LIKE SORTED TABLE OF wa
WITH NON-UNIQUE KEY carrid.
SELECT scarrid scarrname p~connid
INTO CORRESPONDING FIELDS OF TABLE itab
FROM scarr AS s
LEFT OUTER JOIN spfli AS p ON scarrid = pcarrid
AND p~cityfrom = p_cityfr.
LOOP AT itab INTO wa.
IF wa-connid = '0000'.
WRITE: / wa-carrid, wa-carrname.
ENDIF.
ENDLOOP.
REWARD if usefull -
hi
I have following data
create table test1 (ind int,idd varchar(20), sec int, amt float)
create table test2 (ind int, id1 varchar(10), id2 varchar(10), sec int, qty float)
insert into test1 values (11, '1aa',1,100);
insert into test1 values (12, '1aa',1,200);
insert into test1 values (13, '2bb',2,500);
insert into test1 values ( 14,'2bb',2,600);
insert into test1 values ( 15, '3cc',3,100);
insert into test1 values ( 16, '4dd',4,100);
insert into test1 values ( 17, '1aa',5,5100);
insert into test1 values ( 18, '1aa',6,100);
insert into test2 values( 1, '1','aa',1, 300);
insert into test2 values( 2, '1','aa',1, 300);
insert into test2 values( 3, '2','bb',2, 700);
insert into test2 values( 4, '2','bb',2, 100);
insert into test2 values( 5, '3','cc',3, 400);
insert into test2 values( 6, '1','aa',5, 3100);
insert into test2 values( 7, '1','aa',6, 7100);
select test2.ind, idd, id1||id2 , test1.sec, amt, qty from test1 inner join test2 on idd=id1||id2 and test1.sec=test2.sec
order by indI am getting 11 records
1 1aa 1aa 1 100 300
1 1aa 1aa 1 200 300
2 1aa 1aa 1 100 300
2 1aa 1aa 1 200 300
3 2bb 2bb 2 500 700
3 2bb 2bb 2 600 700
4 2bb 2bb 2 600 100
4 2bb 2bb 2 500 100
5 3cc 3cc 3 100 400
6 1aa 1aa 5 5100 3100
7 1aa 1aa 6 100 7100
and following is my desired output
1 1aa 1aa 1 100 300
2 1aa 1aa 1 200 300
3 2bb 2bb 2 500 700
4 2bb 2bb 2 600 100
5 3cc 3cc 3 100 400
6 1aa 1aa 5 5100 3100
7 1aa 1aa 6 100 7100
please helpHi,
Thanks for posting the CREATE TABLE and INSERT statements! That's very helpful.
It's also helpful if you explain how you get the results you want from that data.
Why do you want 7 rows of output, not 11?
Given that you do want 7 rows of output, why do you want the results you posted, and not
IND IDD ID1_ID2 SEC AMT QTY
1 1aa 1aa 1 200 300
2 1aa 1aa 1 200 300
...or
IND IDD ID1_ID2 SEC AMT QTY
1 1aa 1aa 1 100 300
2 1aa 1aa 1 100 300
...or some other combination? Don't force people to spend time guessing, and don't give them a chance to guess wrong.
It looks like you're getting the output you want now, except when there are multiple rows with the same idd and sec in test1 (or the same id1, id2 and sec in test2). These are the join columns.
It looks like you only want one row of output for each gropup that has the same join columns.
Within each of those groups, do you only want
the row with the lowest test1.ind joined to the row with the lowest test2.ind,
the row with the 2nd lowest test1.ind joined to the row with the 2nd lowest test2.ind,
the row with the 3rd lowest test1.ind joined to the row with the 3rd lowest test2.ind,
and so on?
If so, use the analytic ROW_NUMBER functions to indicate whihc i the lowest, 2nd lowest, 3rd lowest, and so on:
WITH test1_with_r_num AS
SELECT ind, idd, sec, amt
, ROW_NUMBER () OVER ( PARTITION BY idd, sec
ORDER BY ind
) AS r_num
FROM test1
, test2_with_r_num AS
SELECT ind, id1, id2, sec, qty
, ROW_NUMBER () OVER ( PARTITION BY id1, id2, sec
ORDER BY ind
) AS r_num
FROM test2
select t2.ind
, t1.idd
, t2.id1 || t2.id2 AS id1_id2
, t1.sec
, t1.amt
, t2.qty
from test1_with_r_num t1
inner join test2_with_r_num t2 on t1.idd = t2.id1 || t2.id2
and t1.sec = t2.sec
and t1.r_num = t2.r_num
order by t2.ind
;This happens to give the results you requested from the data you posted. It may be purely by coincidence.
What if there are an unequal number of rows with the same join conditions in the two tables?
For example, what if we add another row to test1:
insert into test1 (ind, idd, sec, amt) values (91, '1aa',1,125);but don't add any new rows to test2?
What if we add a row only to test2
insert into test2 (ind, id1, id2, sec, ity) values( 9, '1','aa',6, 7199);? What results would you want in these cases?
Maybe you are looking for
-
Error while initiating start case from the EM for Hello World project
Hi Team, I am getting the below error while testing the startCase from the EM. Applied the required patches. <Dec 16, 2013 1:01:09 PM IST> <Error> <oracle.bpm.casemgmt.event> <BEA-000000> <Exception BPM-73200 Error in raising event. Error in raising
-
I am doing this website in Dreamweaver and using a liquid page with header, sidebard and footer I need to put two images in the header one a banner with my logo and the second one is a bar i need both images to go the length of the page and i do not
-
The document type of accounting document of an invoice is different
Dear Friends, The document type of accounting document of an invoice is different for another invoice of the same type. The company codes differ. For example the credit memo B1 has RV as the document type for a particular company code and sales org,
-
Error in ESS while availing a leave
Hi All, In My client place, system gives a dump error when employee is maintaining its leave in ESS system.Here TM is not integrated with payroll. Plz help me how to resolve the issue.
-
Do I need camera raw upgrade?
This text box appeared when I opened Lightroom today Any suggestions on what I should do based on my spec: can I download use cameraraw 5.7 for Lightroom or wont this work? iMac - 1 year old - Intel processor Lightroom v 2.7 Photoshop v CS3 Mac OS