2017-08-02 94 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