SQL Server将忽略该记录

SQL Server将忽略该记录,sql,sql-server,Sql,Sql Server,有人能帮我搬一下吗 我每天获取一个文件,并使用SSIS和SQL加载它 文件日期:2018年8月5日: Date product_name Net_units 01/08/2018 T1 8 文件日期:2018年8月6日: Date product_name Net_units 01/08/2018 T1 18 文件日期:2018年8月7日: Date product_name Net_unit

有人能帮我搬一下吗

我每天获取一个文件,并使用SSIS和SQL加载它

文件日期:2018年8月5日:

Date        product_name  Net_units 
01/08/2018  T1            8
文件日期:2018年8月6日:

Date        product_name  Net_units 
01/08/2018  T1            18
文件日期:2018年8月7日:

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年8月6日插入的,净机组为18台,因此在2018年8月7日加载时被忽略,净机组仍为18台,应使用最新记录将pdct\U事实中的净机组更新为24台


请问有什么帮助吗?谢谢。

您应该进行合并,并在匹配时将事实表单位设置为与暂存表单位相等。见下文

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

感谢您用表格更新了部分。您提供的查询根本不可能运行。您正在从
staging\u temp
pdct\u fact
中选择所有列(
*
),并将其加入到
pdct\u fact
中。联接将向结果中添加比
pdct\u fact
更多的列。该查询应抛出“提供的值的列名或数量与表定义不匹配”错误。很抱歉,我刚刚删除了将列名插入pdct_事实选择st.date、st.product_名称从staging_temp st left outer join pdct_事实ft on st.date=ft.date和st.product_name=ft.product_nameHi中删除,谢谢,我发现以下错误:MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP BY子句对源行进行分组rows@MSM我假设日期和产品名称构成了一个独特的自然键。如果情况并非如此,并且您的表中存在重复项,那么首先更新它们是否有意义?如果要跟踪该表中的历史值,只需追加行。如果没有,请先删除重复项,然后执行上面提到的合并。