2017-08-02 93 views
0

我有一个列表和一列。表格类型的动态创建

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

类似地象下面这样:

Dynamic creation of table in tsql

任何建议,将不胜感激。

编辑:

要完成一个prouct,机器必须与不同的工具材料进行不同的工作。

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

每个作业需要特定的工具和小时数(改变刀具一旦达到IST改变的时间)。作业可以在产品上多次执行。 (在这种情况下,如果作业是perfomed 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 | . | . | . 
----------+------+------+------+------+------+------ 
+0

这听起来像是一个不太聪明的大锤方法。那是什么“东西”?如果你稍微解释用例,可能会有更好的选择。 –

+0

Hi Lars Br。添加了额外的信息为什么我需要它。 – Sai

+0

好的,我已阅读您的附加要求。但是在这种情况下,你需要创建一个表格?你为什么不能用工具加入JOBS并聚合时间? –

回答

1

基础上增加信息,再有两个主要的要求在这里:

  1. 你要总结参与
  2. 你想有一个显示来自步骤倍交叉表报告花了生产由工作分组每个产品的时间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”选项来做到这一点。

+0

谢谢拉尔斯,我了解HANA不会提供PIVOT。我需要这个表示进一步处理。编写sqls的最佳做法是什么?操纵存储过程和函数或纯SQL脚本?为了让生活变得简单,我正在编写存储过程和函数,但它们消耗了大量时间。我想你的意见,并采取一些建议。 – Sai

+0

你能分享你的处理要求吗?使用交叉表作为一些进一步处理的输入在我的经验中是很少见的,因为它更多地关于人类阅读器的光学表示,而不是关于数据可以做什么。 –

+0

hana中的PAL需要交叉表格式。 – Sai