您好,我偶然发现 SAP HANA数据库的某些问题。我有一些玩具示例问题。我试图提出解决方案,但我不知道。 我有两个表音量表
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
请记住,“行”列是指示性的!
表之间的键是“材料”列。
当 BASE_UOM 列音量表中没有KG时,我想转换 SUMMAND(音量表)列中的所有字段,例如第6行中的PAL进入KG,第13行中的ZRS进入KG。如果我们有KG,则不需要更新列 SUMMAND 。要将PAL转换为KG,我需要查看材料和 UNIT 列的转换表(查找PAL字段),并从中获取第5行转化率列( UOMZ1D / UOMN1D )544.32 * 64(64来自音量表行6列 SUMMAND ) 等等。最后,每个材料都有自己的转化率。
音量表的最终输出应如下所示。第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。如果我要从转换表中的UNIT和BASE_UOM之间进行较长的列表转换,想建议我如何缩放它,可以想象有90种可能的组合。我需要构建什么SQL查询才能实现所需的输出。欢迎任何解决方案。
答案 0 :(得分:1)
根据您的描述,您可能希望使用内部连接将转化因子与材料进行匹配。
与此类似:
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 HANA的内置度量单位转换功能。由于这些文件旨在复制基于SAP NetWeaver的应用程序的UOM转换逻辑,因此在这种情况下,可能不是您想要的。