Sei sulla pagina 1di 1

DATABASE RETAIL;

CREATE MULTISET TABLE STAGE_TABLE(


ID INT
,SAL DECIMAL(8,0)
,START_DATE DATE
,END_DATE DATE);

CREATE MULTISET TABLE TARGET_TABLE(


ID INT
,SAL DECIMAL(8,0)
,START_DATE DATE
,END_DATE DATE);

INSERT INTO STAGE_TABLE VALUES(1,50,'2019-01-01','2019-01-09');


INSERT INTO STAGE_TABLE VALUES(1,100,'2019-01-10','2019-01-10');
INSERT INTO STAGE_TABLE VALUES(2,100,'2019-02-01','2019-02-01');

INSERT INTO TARGET_TABLE VALUES(1,50,'2019-01-01','9999-12-31');

SELECT *
FROM TARGET_TABLE;

SELECT *
FROM STAGE_TABLE;

UPDATE TARGET_TABLE
FROM STAGE_TABLE AS STAGE
SET END_DATE = STAGE.START_DATE - 1
WHERE TARGET_TABLE.ID=STAGE.ID AND TARGET_TABLE.SAL <> STAGE.SAL;

INSERT INTO TARGET_TABLE(ID,SAL,START_DATE,END_DATE)


SELECT ID,SAL,START_DATE,'9999-12-31'
FROM STAGE_TABLE AS STAGE
WHERE EXISTS
(SELECT ID FROM STAGE_TABLE AS STG
WHERE STG.ID<>STAGE.ID AND STG.SAL=STAGE.SAL) ;

Potrebbero piacerti anche