嗨,我偶然发现了一些SAP数据库的问题,请注意。我有一些玩具例子的问题。我试着想出解决办法,但我想不出来。我有两个表,一个是卷表
Row MATERIAL BASE_UOM PERIOD SUMMAND
1 55555 KG 201106 99
2 55555 KG 201204 16
3 55555 KG 201301 71
4 55555 KG 201411 83
5 55555 KG 201509 21
6 55555 PAL 201510 64
7 55555 PAL 201511 69
8 55555 KG 201512 55
9 55555 ZRS 201601 81
10 55555 KG 201602 3
11 55555 KG 201603 74
12 55555 KG 201604 58
13 55555 ZRS 201605 8
14 55555 KG 201606 22第二个表是转换表。
Row MATERIAL UNIT BASE_UOM UOMN1D UOMZ1D Conversion Rate
1 55555 KG KG 1 1 1
2 55555 CSE KG 1,000.00 2,016.00 2.016
3 55555 ST KG 1,000.00 56 0.056
4 55555 LAY KG 100 3,024.00 30.24
5 55555 PAL KG 100 54,432.00 544.32
6 55555 ZDK KG 59,778.00 54,432.00 0.910569106
7 55555 ZSE KG 59,778.00 54,432.00 0.910569106
8 55555 ZNO KG 59,778.00 54,432.00 0.910569106
9 55555 ZFI KG 59,778.00 54,432.00 0.910569106
10 55555 ZRV KG 1,000.00 57 0.057
11 55555 ZRS KG 1,000.00 2,052.00 2.052请记住,行列是指示性的!
表之间的键是物质列。
我想转换列SUMMAND (卷表)中的所有字段,如果BASE_UOM列中没有KG,则在卷表中没有KG,例如在第6行是PAL到KG,或者第13行ZRS转换为KG。如果我们有KG,我们不需要更新列SUMMAND。要将PAL转换为KG,我需要在(UOMZ1D/UOMN1D)材料和单元列(查阅PAL字段)上查找转换表,并从转换速率列 544.32*64 (64来自卷表<代码>E 229第6列<代码>E 130SUMMANDE 231等)查找第5行。最后,每个单独的材料都有自己的转化率。
卷表的最终输出应该如下所示。正确更新第6、7、9、13行。
Row MATERIAL BASE_UOM PERIOD SUMMAND
1 55555 KG 201106 99
2 55555 KG 201204 16
3 55555 KG 201301 71
4 55555 KG 201411 83
5 55555 KG 201509 21
6 55555 PAL 201510 34836.48
7 55555 PAL 201511 37558.08
8 55555 KG 201512 55
9 55555 ZRS 201601 166.212
10 55555 KG 201602 3
11 55555 KG 201603 74
12 55555 KG 201604 58
13 55555 ZRS 201605 16.416
14 55555 KG 201606 22我如何检查每一个可能的组合,以将所有单位转换为KG之间的这两个表。我想建议我如何缩放它,如果我有更长的列表转换之间的单位和BASE_UOM从转换表想象的90种独特的可能组合。为了达到预期的输出,我需要构建什么SQL查询。欢迎任何一种解决方案。
发布于 2019-05-13 04:30:14
根据您的描述,您可能希望使用内部联接来匹配材料的转换因子。
与此类似的东西:
SELECT
v.MATERIAL
, v.BASE_UOM as ORIGINAL_UOM
, v.PERIOD
, c.UNIT as TARGET_OUM
, (c.UOMZ1D/c.UOMN1D) * v.SUMMAND as SUMMAND_TARGET_OUM
FROM
VOLUMES v
INNER JOIN CONVERSION c
ON (v.MATERIAL, v.BASE_UOM)
= (c.MATERIAL, c.UNIT)此查询依赖于每个可能的material/base_uom组合在转换表中只有一个和唯一一个匹配项。如果找不到匹配,输出中将省略来自VOLUMES的相应记录。
显然,可以设计出更好地抵御丢失数据的方法(例如,通过不改变的数据或传递查找的回退输出),但是所给出的解决方案是直接的,易于理解和调试。
请注意,这确实是而不是使用SAP内置的度量单位转换功能。由于这些是为了复制SAP NetWeaver -based应用程序的UOM转换逻辑而设计的,所以在本例中这些可能不是您想要的。
https://stackoverflow.com/questions/56058387
复制相似问题