ソースコード
-- 処理1: 新設された部門('B300')を作成する
INSERT INTO DEPARTMENT (
    DEPT_CODE, 
    START_DATE, 
    END_DATE, 
    DEPT_NAME, 
    LAYER, 
    UP_DEPT_CODE, 
    VALID_FLG, 
    UPDATE_USER_NAME, 
    USER_UPDATE_DATETIME
)
SELECT 
    'B300',                          -- 新設部門コード
    '2023-04-01',                    -- 新設部門の開始日
    NULL,                            -- 終了日はNULL
    '新設部門',                      -- 新設部門名
    LAYER,                           -- 'A100'のLAYER
    UP_DEPT_CODE,                    -- 'A100'のUP_DEPT_CODE
    '1',                             -- 有効フラグ
    UPDATE_USER_NAME,                -- 'A100'のUPDATE_USER_NAME
    '2023-04-01 00:00:00'            -- 更新日時
FROM 
    DEPARTMENT
WHERE 
    DEPT_CODE = 'A100';              -- 'A100'のデータを基に作成

-- 処理2: 統合される部門('A100','A200')を無効に変更する
UPDATE DEPARTMENT
SET 
    END_DATE = '2023-03-31',         -- 統合日を終了日として設定
    VALID_FLG = '0',                 -- 無効フラグに変更
    UPDATE_USER_NAME = 'ORG_CHG',     -- 更新者名を'ORG_CHG'に変更
    USER_UPDATE_DATETIME = '2023-03-31 23:59:59' -- 更新日時を設定
WHERE 
    DEPT_CODE IN ('A100', 'A200');   -- 'A100'と'A200'が対象

-- 処理3: 社員テーブルの部門コードを新設部門('B300')に変更
UPDATE EMP
SET 
    DEPT_CODE = 'B300',              -- 新設部門に更新
    START_DATE = '2023-04-01',       -- 部門変更の開始日
    UPDATE_USER_NAME = 'ORG_CHG',     -- 更新者名を'ORG_CHG'に変更
    USER_UPDATE_DATETIME = '2023-04-01 00:00:00' -- 更新日時
WHERE 
    DEPT_CODE IN ('A100', 'A200')    -- 'A100'または'A200'が対象
    AND VALID_FLG = '1';             -- 有効なデータのみ対象

-- 結果確認: 部門テーブルの更新結果を確認
SELECT * 
FROM DEPARTMENT 
WHERE DEPT_CODE IN ('A100', 'A200', 'B300');

-- 結果確認: 社員テーブルの更新結果を確認
SELECT * 
FROM EMP 
WHERE DEPT_CODE = 'B300';
提出情報
提出日時2024/09/19 16:44:50
コンテスト第6回 SQLコンテスト
問題組織変更
受験者lulei
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量86 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
83 MB
データパターン2
AC
86 MB