Sap 表类型的动态创建
我有一个单列的列表 我想创建一个表类型,将上述表列中的所有元素作为具有固定数据类型和大小的列名,并在函数中使用它 类似如下: 如有任何建议,将不胜感激 编辑: 为了完成一项工作,机器必须使用不同的工具对材料执行不同的工作 我有一个机器可以执行的作业列表和一个工具列表。用于特定作业的特定工具 每个作业都需要一个特定的工具和小时数(一旦达到ist更换时间,就要更换工具)。一个作业可以在一个产品上执行多次。(在这种情况下,如果作业执行1小时=工具已使用1小时) 对于每个产品,一组工具将按顺序工作。因此,我需要每个产品的报告,该工具的工作小时数 编辑2: 产品表Sap 表类型的动态创建,sap,hana,Sap,Hana,我有一个单列的列表 我想创建一个表类型,将上述表列中的所有元素作为具有固定数据类型和大小的列名,并在函数中使用它 类似如下: 如有任何建议,将不胜感激 编辑: 为了完成一项工作,机器必须使用不同的工具对材料执行不同的工作 我有一个机器可以执行的作业列表和一个工具列表。用于特定作业的特定工具 每个作业都需要一个特定的工具和小时数(一旦达到ist更换时间,就要更换工具)。一个作业可以在一个产品上执行多次。(在这种情况下,如果作业执行1小时=工具已使用1小时) 对于每个产品,一组工具将按顺序工作。因
---------+-----+
ProductID|Jobs |
---------+-----+
1 | job1 |
1 | job2 |
1 | job3 |
1 | . |
1 | . |
1 |100th |
2 | job1 |
2 | . |
2 | . |
2 |200th |
工作表
-------+-------+-------
Jobs | tool | time
-------+-------+-------
job1 |tool 10| 2
job1 |tool 09| 1
job2 |tool 11| 4
job3 |tool 17| 0.5
所需报告(此表实际不存在)
根据增加的信息,这里有两个主要要求:
及
SELECT
p.product_id,
j.jobs,
SUM(j.time) as SUM_TIME
FROM
products p
INNER JOIN jobs j
ON p.jobs = j.jobs
GROUP BY
p.product_id,
j.jobs;
对于第二部分:这通常称为透视报告。
SAP HANA不提供动态SQL命令来生成这种形式的输出(其他DBM也有)。
然而,这种动态转换通常与数据表示相关,而与处理无关
因此,由于您可能希望在此报告中使用某种形式的前端(例如MS Excel、Crystal Reports、Business Objects X、Tableau等),我建议您在前端报告中进行转换和格式化。寻找“枢轴”或“交叉表”选项来实现这一点。这听起来像是一种不太聪明的大锤式方法。那是什么“东西”?如果您稍微解释一下用例,可能会有更好的选择。嗨,Lars Br。添加了我为什么需要它的附加信息。好的,我已经阅读了您添加的要求。但是在这种情况下,您需要为什么创建一个表呢?为什么不能使用工具加入作业并聚合时间?对于每个产品,每个作业/工具需要报告多少小时。第一个coulmn将是productID。时间根据为产品放置的金属形状而变化。您给出的建议是无论如何都要对作业和工具聚合进行操作。也许您可以提供您现在拥有的表定义、一些测试数据以及输出应该是什么样子。根据描述,我不明白为什么您的数据结构应该是动态的。谢谢Lars,我理解HANA不提供PIVOT。我需要这份陈述书以便进一步处理。编写sqls的最佳实践是什么。编写存储过程和功能还是纯SQL脚本?为了让生活变得简单,我正在编写存储过程和功能,但它们会占用很多时间。我想听听你的意见并提出一些建议。你能分享一下你的处理要求吗?在我的经验中,使用交叉表作为进一步处理的输入是相当少见的,因为它更多地是关于人类读者的光学表示,而不是关于如何处理数据。hana中的PAL需要交叉表格式。
SELECT
p.product_id,
j.jobs,
SUM(j.time) as SUM_TIME
FROM
products p
INNER JOIN jobs j
ON p.jobs = j.jobs
GROUP BY
p.product_id,
j.jobs;