SQL Server将忽略该记录
有人能帮我搬一下吗 我每天获取一个文件,并使用SSIS和SQL加载它 文件日期:2018年8月5日: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
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我假设日期和产品名称构成了一个独特的自然键。如果情况并非如此,并且您的表中存在重复项,那么首先更新它们是否有意义?如果要跟踪该表中的历史值,只需追加行。如果没有,请先删除重复项,然后执行上面提到的合并。