动态创建 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 | . | . | .
----------+------+------+------+------+------+------
根据补充的信息,这里主要有两个需求:
- 您想总结生产每个产品所花费的时间,按所涉及的工作分组
和
- 您想要一个交叉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" 选项来做到这一点。
我有一列 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 | . | . | .
----------+------+------+------+------+------+------
根据补充的信息,这里主要有两个需求:
- 您想总结生产每个产品所花费的时间,按所涉及的工作分组
和 - 您想要一个交叉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" 选项来做到这一点。