2021.5.7
今回ご紹介するのは、intra-mart既存のテーブルより”ユーザ別役職”を取得する方法になります。
主要となるのは以下のテーブルになります。
・IMM_USER (ユーザマスタ)
⇒ユーザの基本情報を保持するテーブル
・IMM_DEPARTMENT (組織マスタ)
⇒組織の基本情報を保持するテーブル
・IMM_DEPARTMENT_ATH (組織所属マスタ)
⇒ユーザと組織の情報をつなげるテーブル
・IMM_DEPARTMENT_POST_ATH (組織所属役職)
⇒ユーザと所属組織の役職情報をつなげるテーブル
・IMM_COMPANY_POST (役職マスタ)
⇒役職の基本情報を保持するテーブル
実行SQL
・以下の例では、”2021/04/01″に有効なユーザ別役職情報を取得しています。
SELECT A.USER_CD -- ユーザコード , A.USER_NAME -- ユーザ名 , C.DEPARTMENT_CD -- 組織コード , C.DEPARTMENT_NAME -- 組織名 , E.POST_CD -- 役職コード , E.POST_NAME -- 役職名 FROM IMM_USER A INNER JOIN IMM_DEPARTMENT_ATH B ON A.USER_CD = B.USER_CD AND A.LOCALE_ID = 'ja' AND A.DELETE_FLAG = '0' AND B.DELETE_FLAG = '0' AND B.DEPARTMENT_MAIN = '1' -- 主所属フラグ AND '20210401' BETWEEN TO_CHAR(B.START_DATE, 'YYYYMMDD') AND TO_CHAR(B.END_DATE, 'YYYYMMDD') INNER JOIN IMM_DEPARTMENT C ON B.COMPANY_CD = C.COMPANY_CD AND B.DEPARTMENT_SET_CD = C.DEPARTMENT_SET_CD AND B.DEPARTMENT_CD = C.DEPARTMENT_CD AND C.LOCALE_ID = 'ja' AND C.DELETE_FLAG = '0' AND '20210401' BETWEEN TO_CHAR(C.START_DATE, 'YYYYMMDD') AND TO_CHAR(C.END_DATE, 'YYYYMMDD') INNER JOIN IMM_DEPARTMENT_POST_ATH D ON B.COMPANY_CD = D.COMPANY_CD AND B.DEPARTMENT_SET_CD = D.DEPARTMENT_SET_CD AND B.DEPARTMENT_CD = D.DEPARTMENT_CD AND B.USER_CD = D.USER_CD AND D.DELETE_FLAG = '0' AND '20210401' BETWEEN TO_CHAR(D.START_DATE, 'YYYYMMDD') AND TO_CHAR(D.END_DATE, 'YYYYMMDD') INNER JOIN IMM_COMPANY_POST E ON D.COMPANY_CD = E.COMPANY_CD AND D.DEPARTMENT_SET_CD = E.DEPARTMENT_SET_CD AND D.POST_CD = E.POST_CD AND E.LOCALE_ID = 'ja' AND E.DELETE_FLAG = '0' AND '20210401' BETWEEN TO_CHAR(E.START_DATE, 'YYYYMMDD') AND TO_CHAR(E.END_DATE, 'YYYYMMDD') WHERE '20210401' BETWEEN TO_CHAR(A.START_DATE, 'YYYYMMDD') AND TO_CHAR(A.END_DATE, 'YYYYMMDD') AND A.LOCALE_ID = 'ja' AND A.DELETE_FLAG = '0'
他で紹介している、SQLと合わせて使ってみてください。
それではまた次回。。。(^^)/~~