动态创建表类型

时间:2017-08-02 07:28:25

标签: sap hana

我有一个包含单列的列表。

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

同样如下:

Dynamic creation of table in tsql

任何建议都将不胜感激。

编辑:

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

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

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

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

编辑2:

产品表

---------+-----+
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

必填报告(此表实际上不存在)

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

1 个答案:

答案 0 :(得分:1)

根据增加的信息,这里有两个主要要求:

  1. 您想要总结生产按照相关工作分组的每种产品所花费的时间 和
  2. 您希望有一个跨表报告,显示从步骤1开始的产品和作业的时间。
  3. 对于第一位,您可能可以使用如下查询执行此操作:

    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”选项来做到这一点。