我有这两个表和SQL Server中的一些示例数据。
Rules
表只是Inventory
表的SELECT DISTINCT (DataSource_Id, LocationCode, WarehouseCode, WarehouseName, MTO_Regional)
表。
我想在那里Inventory
/如果有任何三个值“SSIN ......”列更新基础上,MTO_MTS
值Rules
表SS_Value
列。
例:在规则表将抢在相匹配基础上(DataSource_Id,LocationCode,WarehouseCode,WarehouseName,MTO_MTSRegional),并有一个库存表中的第一MTO_MTS值第1记录“SSIN ......”这是不为0
所以它可以抓住无论是前两个记录清单,因为这些5列匹配,并且SSIN的至少一个..列列是一个非零
我至今已尝试过:
我尝试过使用游标,但有数以百万计的记录,所以无法处理它。我试图构造一个更新语句,但无法弄清楚语法。
UPDATE Rules r
SET SS_Value = (SELECT TOP(1) MTO_MTS FROM Inventory ip
WHERE r.DataSource_Id = ip.DataSource_Id
AND r.LocationCode = ip.LocationCode
AND r.WarehouseCode = ip.WarehouseCode
AND r.WarehouseName = ip.WarehouseName
AND r.MTO_MTSRegional = ip.MTO_MTSRegional
(ip.SafetyStockInKLG <> 0 OR ip.SafetyStockInLTR <> 0 OR ip.SafetyStockInUnits <> 0)
这个总体思想中的某些东西我认为可能会起作用,但我无法获得正确的语法。
我也试着像语法:
UPDATE Rules
SET ip.SS_Value
FROM InventoryProduction ip
INNER JOIN Rules
我遇到了麻烦,在查询表的范围,正从正在更新应用到WHERE子句中的列的值。
这3行中的哪一行是第一行?您如何订购? (请不要说“因为它是第一个”,我们需要一种方式来订购它们) – Lamak
我不知道我100%理解你的问题。但是,我知道没有对Inventory表的设置顺序,只是将该记录插入到数据库中,并且存在递增的Id列。在符合标准的行中,您抓取哪一个并不重要。如果那不能回答你的问题,让我知道,我可以尝试更好地理解。 – mrshickadance
“规则表中的第一条记录将获取”库存表“中的第一条** MTO_MTS值,那么,哪一条是第一条呢?有3个选项 – Lamak