ソースコード
/*
組織変更により部門テーブル(DEPARTMENT)の部門コード(DEPT_CODE)='A100' と'A200'が、新設される部門コード='B300'に統合されることになった。 
組織変更の対応として、下記の処理を行いなさい。
また、部門テーブルは組織変更の履歴管理のために開始日と終了日を持っており、変更があった部門の終了日には変更された日付が設定されている。

セミコロン「;」でSQL文を区切ることで、複数のクエリを実行できます。
また、最後にSELECT文を合わせて記載することで、データの更新結果を確認できます。

処理1 :新設された部門('B300')を'A100'のデータを利用して作成する。

DEPT_CODE = 'B300'
START_DATE = '2023-04-01'
END_DATE = NULL
DEPT_NAME = '新設部門'
LAYER = 'A100'のLAYER
UP_DEPT_CODE = 'A100'のUP_DEPT_CODE
VALID_FLG = '1'
UPDATE_USER_NAME = 'A100'のUPDATE_USER_NAME
USER_UPDATE_DATETIME = '2023-04-01 00:00:00'
処理2 :統合される部門('A100','A200')を無効に変更する。

END_DATE = '2023-03-31'
VALID_FLG = '0'
UPDATE_USER_NAME = 'ORG_CHG'
USER_UPDATE_DATETIME = '2023-03-31 23:59:59'
処理3 : 社員テーブル(EMP)の部門コード(DEPT_CODE)が統合される部門コードになっているデータの部門コードを、
新設される部門コードに変更する。ただし、有効なデータ(VALID_FLG = '1')のみ対象とする。

DEPT_CODE ='B300'
START_DATE = '2023-04-01'
UPDATE_USER_NAME = 'ORG_CHG'
USER_UPDATE_DATETIME = '2023-04-01 00:00:00'
*/
insert into DEPARTMENT values(
    'B300',
    '2023-04-01',
    NULL,
    '新設部門',
    (select LAYER from DEPARTMENT where DEPT_CODE = 'A100'),
    (select UP_DEPT_CODE from DEPARTMENT where DEPT_CODE = 'A100'),
    '1',
    (select UPDATE_USER_NAME from DEPARTMENT where DEPT_CODE = 'A100'),
    '2023-04-01 00:00:00'
);
update DEPARTMENT set
    END_DATE = '2023-03-31',
    VALID_FLG = '0',
    UPDATE_USER_NAME = 'ORG_CHG',
    USER_UPDATE_DATETIME = '2023-03-31 23:59:59'
where 
    DEPT_CODE in ('A100','A200');
update EMP set
    DEPT_CODE ='B300',
    START_DATE = '2023-04-01',
    UPDATE_USER_NAME = 'ORG_CHG',
    USER_UPDATE_DATETIME = '2023-04-01 00:00:00'
where
    DEPT_CODE in ('A100','A200') and VALID_FLG = '1';
提出情報
提出日時2024/07/26 09:51:21
コンテスト第6回 SQLコンテスト
問題組織変更
受験者asano
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
85 MB
データパターン2
AC
84 MB