question

Jad2SQL avatar image
Jad2SQL asked

update on dimension table

--conditions :Source #std :destination table :#destination` primary keys are id and episode.

--if #stg.Determination_Code=#destination.Determination_Code update only srtf.fields. #destination.Assessment_Status(date) remains the same
--2)if #stg.Determination_Code<>#destination.Determination_Code update all fields including #destination.Assessment_Status .

--b) If it does not, update all valu
    drop table #stg

create table #stg
(
    [id] [varchar](20) NULL,
    [episode] [int] NULL,
    [Assessment_Status] [date] NULL,
    [Determination_Code] [varchar](40) NULL,
    [Determination] [varchar](40) NULL,
    [SRTF_Status_Code] [varchar](40) NULL,
    [SRTF_Status_Value] [varchar](40) NULL,
    [Days_SRTF] [int] NULL,
    [dss_create_time] [datetime] NULL,
    [dss_update_time] [datetime] NULL
    )

    insert into #stg
    values('200',2,'2022-03-24','1','Ready to Place','Yes','Yes',20,getdate (),getdate())

    select * from #stg

    create table #dimension(
    [dim_key] [int] IDENTITY(1,1) NOT NULL,
    [id] [varchar](20) NULL,
    [episode] [int] NULL,
    [Assessment_Status] [date] NULL,
    [Determination_Code] [varchar](40) NULL,
    [Determination] [varchar](40) NULL,
    [SRTF_Status_Code] [varchar](40) NULL,
    [SRTF_Status_Value] [varchar](40) NULL,
    [Days_SRTF] [int] NULL,
    [dss_create_time] [datetime] NULL,
    [dss_update_time] [datetime] NULL,
 CONSTRAINT [dim_idx_0] PRIMARY KEY CLUSTERED 
(
    [dim_key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) 
    insert into #dimension
    values('200','2','2018-09-19','1','Ready to Place','Yes','Yes',20,getdate (),getdate())

    select * from #dimension
                -----attempted solution below

            MERGE INTO #dimension
            USING (
            SELECT 
                    #stg.id AS patid
                    , #stg.episode AS episode
                    , #stg.Assessment_Status AS Assessment_Status
                    , #stg.Determination_Code AS Determination_Code
                    , #stg.Determination AS Determination
                    , #stg.SRTF_Status_Code AS SRTF_Status_Code
                    , #stg.SRTF_Status_Value AS SRTF_Status_Value
                    , #stg.Days_SRTF AS Days_SRTF
            FROM #stg #stg
            ) AS changes 
            ON (
                    #dimension.id = changes.id
                AND #dimension.episode = changes.episode
            )
            WHEN MATCHED THEN 
            UPDATE 
            SET    --- Assessment_Status =  changes.Assessment_Status
                --,
                    Determination_Code =  changes.Determination_Code
                , Determination =  changes.Determination
                , SRTF_Status_Code =  changes.SRTF_Status_Code
                , SRTF_Status_Value =  changes.SRTF_Status_Value
                , Days_SRTF =  changes.Days_SRTF
                , dss_update_time = getdate()
            WHEN NOT MATCHED THEN 
            INSERT 
            (       id
                , episode
                , Assessment_Status
                , Determination_Code
                , Determination
                , SRTF_Status_Code
                , SRTF_Status_Value
                , Days_SRTF
                , dss_create_time
                , dss_update_time
            )
            VALUES 
            (       id
                , episode
                , Assessment_Status
                , Determination_Code
                , Determination
                , SRTF_Status_Code
                , SRTF_Status_Value
                , Days_SRTF
                ,getdate()
                ,getdate()

            );
sql databasedatawarehouse
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

0 Answers

·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.