动态创建 Table 类型

Dynamic creation of Table type

我有一列 table 有一个列。

我想创建一个 table 类型,将上述 table 列中的所有元素作为具有固定数据类型和大小的列名,并在函数中使用它。

类似如下:

Dynamic creation of table in tsql

如有任何建议,我们将不胜感激。

编辑:

要完成产品,机器必须使用不同的工具在 material 上执行不同的工作。

我有一个机器可以执行的作业列表和一个工具列表。针对特定工作的特定工具。

每项工作都需要特定的工具和小时数(一旦达到更换时间就更换工具)。可以在产品上多次执行作业。 (在这种情况下,如果作业执行了 1 小时 = 工具已使用 1 小时)

对于每个产品,一组工具将按顺序工作。所以我需要每个产品的报告,该工具的工作小时数。

编辑 2:

产品table

---------+-----+
ProductID|Jobs |
---------+-----+
 1       | job1 |
 1       | job2 |
 1       | job3 |
 1       |  .   |
 1       |  .   |
 1       |100th |
 2       | job1 |
 2       |  .   |
 2       |  .   |
 2       |200th |

职位Table

-------+-------+-------
Jobs   |  tool | time
-------+-------+-------
 job1  |tool 10| 2
 job1  |tool 09| 1
 job2  |tool 11| 4
 job3  |tool 17| 0.5

需要报告(这个table实际上并不存在)

----------+------+------+------+------+------+-----
productID | job1 | job2 | job3 | job4 | job5 | . . .
----------+------+------+------+------+------+------
1         | 20   |  10  |  5   |  .   |   .  | .
----------+------+------+------+------+------+------
2         | 10   |  13  |  5   |  .   |   .  | .
----------+------+------+------+------+------+------

根据补充的信息,这里主要有两个需求:

  1. 您想总结生产每个产品所花费的时间,按所涉及的工作分组
  2. 您想要一个交叉table 报告显示第 1 步中针对产品和工作的时间。

首先,您可能可以通过这样的查询来做到这一点:

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;

对于第二部分:这通常称为 PIVOT 报告。 SAP HANA 不提供动态 SQL 命令来生成这种形式的输出(其他 DBMS 有)。 然而,这种动态转换通常与数据表示相关,而与处理无关。

因此,由于您可能希望为此报告使用某种形式的前端(例如 MS Excel、Crystal Reports、Business Objects X、Tableau...),我建议在前端报告中进行转换和格式化。寻找 "PIVOT" 或 "CROSSTAB" 选项来做到这一点。