|
Sql for Join functionality
Instead of the Union All, I want to convert the following SQL to three new sets of SQL but can't get JOIN to work in oracle; first "inner join" where records that exist only in both tables are returned; second "left join" where all records from first table are returned plus records from second table that exist in first table, and last a "right join" where all records from second tabe are returned plus records from first table that exist in second table:
SELECT R_COMM_CD.COMM_CLS COMM_CLS, CAST(NULL AS VARCHAR2(60)) LGL_NM, CAST(NULL AS VARCHAR2(25)) MANFR_NM, CAST(NULL AS VARCHAR2(25)) MANFR_PART_NO, R_INVN.AVAIL_QTY COMM_QTY, R_INVN.STK_COMM_CD COMM_CD, R_INVN.COMM_DSCR COMM_DSCR, R_INVN.UNIT_PRICE UNIT_PRICE, CAST(NULL AS VARCHAR2(8)) SRC_DOC_CD, CAST(NULL AS VARCHAR2(20)) SRC_DOC_ID, CAST(NULL AS NUMBER(10,0)) SRC_LN_NO, R_INVN.VEND_CUST_CD VEND_CUST_CD, CAST(NULL AS NUMBER(10,0)) SRC_INV_FL, CAST(NULL AS NUMBER(10,0)) SRC_BUYS_FL, CAST(NULL AS NUMBER(10,0)) SRC_MA_FL, CAST(1 AS NUMBER(10,0)) SRC_CD, R_COMM_CD.COMM_SPECS COMM_SPECS, R_INVN.ISS_UOM UNIT_MEAS_CD, CAST(NULL AS NUMBER(14,6)) UNIT_PRICE_TO, CAST(NULL AS NUMBER(14,6)) UNIT_PRICE_FM, CAST(NULL AS VARCHAR2(4)) SRC_DOC_DEPT_CD, CAST(NULL AS NUMBER(10,0)) LN_TYP, CAST(NULL AS NUMBER(10,0)) SRC_VEND_LN_NO, CAST(NULL AS NUMBER(10,0)) BUYS_FL, CAST(NULL AS NUMBER(10,0)) INV_FL, CAST(NULL AS NUMBER(14,2)) CNTRC_AM, CAST(NULL AS VARCHAR2(60)) COMM_DSCR_UP, CAST(NULL AS VARCHAR2(60)) ALIAS_NM, CAST(NULL AS VARCHAR2(8)) PO_DOC_CD, CAST(NULL AS VARCHAR2(4)) PO_DOC_DEPT_CD, CAST(NULL AS VARCHAR2(20)) PO_DOC_ID, CAST(NULL AS VARCHAR2(8)) MA_DOC_CD, CAST(NULL AS VARCHAR2(4)) MA_DOC_DEPT_CD, CAST(NULL AS VARCHAR2(20)) MA_DOC_ID, R_INVN.WHSE_CD WHSE_CD, CAST(NULL AS NUMBER(10,0)) MST_AGRMT_FL, R_INVN.STK_ITM_SFX STK_ITM_SFX FROM R_INVN, R_COMM_CD WHERE (R_INVN.STK_COMM_CD=R_COMM_CD.COMM_CD) UNION ALL
SELECT R_COMM_CD.COMM_CLS COMM_CLS, R_VEND_CUST.LGL_NM LGL_NM, MA_DOC_COMM.MANFR_NM MANFR_NM, MA_DOC_COMM.MANFR_PART_NO MANFR_PART_NO, MA_DOC_COMM.QTY COMM_QTY, MA_DOC_COMM.COMM_CD COMM_CD, MA_DOC_COMM.COMM_DSCR COMM_DSCR, MA_DOC_COMM.UNIT_PRICE UNIT_PRICE, MA_DOC_COMM.DOC_CD SRC_DOC_CD, MA_DOC_COMM.DOC_ID SRC_DOC_ID, MA_DOC_COMM.DOC_COMM_LN_NO SRC_LN_NO, MA_DOC_COMM.VEND_CUST_CD VEND_CUST_CD, CAST(NULL AS NUMBER(10,0)) SRC_INV_FL, CAST(NULL AS NUMBER(10,0)) SRC_BUYS_FL, CAST(NULL AS NUMBER(10,0)) SRC_MA_FL, CAST(2 AS NUMBER(10,0)) SRC_CD, R_COMM_CD.COMM_SPECS COMM_SPECS, MA_DOC_COMM.UNIT_MEAS_CD UNIT_MEAS_CD, CAST(NULL AS NUMBER(14,6)) UNIT_PRICE_TO, CAST(NULL AS NUMBER(14,6)) UNIT_PRICE_FM, MA_DOC_COMM.DOC_DEPT_CD SRC_DOC_DEPT_CD, MA_DOC_COMM.LN_TYP LN_TYP, MA_DOC_COMM.DOC_VEND_LN_NO SRC_VEND_LN_NO, R_COMM_CD.BUYS_COM_FL BUYS_FL, R_COMM_CD.COMM_INVNT_FL INV_FL, MA_DOC_COMM.CNTRC_AM CNTRC_AM, CAST(NULL AS VARCHAR2(60)) COMM_DSCR_UP, R_VEND_CUST.ALIAS_NM ALIAS_NM, CAST(NULL AS VARCHAR2(8)) PO_DOC_CD, CAST(NULL AS VARCHAR2(4)) PO_DOC_DEPT_CD, CAST(NULL AS VARCHAR2(20)) PO_DOC_ID, MA_DOC_COMM.DOC_CD MA_DOC_CD, MA_DOC_COMM.DOC_DEPT_CD MA_DOC_DEPT_CD, MA_DOC_COMM.DOC_ID MA_DOC_ID, CAST(NULL AS VARCHAR2(8)) WHSE_CD, CAST(NULL AS NUMBER(10,0)) MST_AGRMT_FL, CAST(NULL AS VARCHAR2(3)) STK_ITM_SFX FROM MA_DOC_COMM, MA_DOC_HDR, R_COMM_CD, R_VEND_CUST WHERE (MA_DOC_COMM.COMM_CD=R_COMM_CD.COMM_CD) AND (MA_DOC_COMM.VEND_CUST_CD=R_VEND_CUST.VEND_CUST_CD) AND (MA_DOC_COMM.DOC_TYP='MA') AND (MA_DOC_COMM.DOC_PHASE_CD=3) AND (MA_DOC_COMM.DOC_CD=MA_DOC_HDR.DOC_CD) AND (MA_DOC_COMM.DOC_ID=MA_DOC_HDR.DOC_ID) AND (MA_DOC_COMM.DOC_DEPT_CD=MA_DOC_HDR.DOC_DEPT_CD) AND (MA_DOC_COMM.DOC_VERS_NO=MA_DOC_HDR.DOC_VERS_NO) AND (MA_DOC_HDR.EFEND_DT>=to_date('2004-07-01','YYYY-MM-DD')) AND ( MA_DOC_HDR.DOC_FUNC_CD <>3) ORDER BY SRC_CD, COMM_CD, STK_ITM_SFX
|