SQL Server左外忽略记录

时间:2018-08-08 01:00:41

标签: sql sql-server

有人可以在以下负载中帮助我吗?

我每天都会得到一个文件,并使用SSIS和SQL加载它。

提交日期2018年5月8日:

Date        product_name  Net_units 
01/08/2018  T1            8

申请日期06/08/2018:

Date        product_name  Net_units 
01/08/2018  T1            18

提交日期2018年7月8日:

Date        product_name  Net_units 
01/08/2018  T1            24

以下是我的查询以加载此有机数据文件:

insert into pdct_fact 
    select * 
    from staging_temp st
    left outer join pdct_fact ft on st.date = ft.date
                                 and st.product_name = ft.product_name  

由于此记录是在2018年6月8日以net_unit 0f 18插入的,因此在07/08/2018加载时它被忽略,并且net_units仍为18,因此应该将pdct_fact中的net_units更新为24最新记录。

对此有任何帮助吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您应该进行合并,并在匹配时将事实表的单位设置为等于登台表的单位。见下文。

MERGE INTO pdct_fact ft
USING staging_temp st
    ON ft.date = st.date and ft.product_name = st.product_name
    WHEN MATCHED 
     THEN
       UPDATE SET 
           ft.net_units = st.net_units