2017-08-02 16 views
0

私は単一の列を持つ列テーブルを持っています。テーブルタイプの動的作成

上記のテーブルの列にあるすべての要素を固定のデータ型とサイズの列名として作成し、それを関数で使用したいと考えています。同様に以下のような

Dynamic creation of table in tsql

任意の提案をいただければ幸いです。

EDIT:

prouctを終了するには、マシンが異なるツールと材料の異なるジョブを実行する必要があります。

私はマシンが実行できるジョブのリストとツールのリストを持っています。特定のジョブのための特定のツール。

各ジョブには、特定のツールと時間数が必要です(ツールが変更された時点でツールを変更する必要があります)。ジョブは製品に対して何回も実行できます。 (この場合、ジョブが1時間=ツールが1時間使用されている場合)

一連のツールが順番に動作します。私は、各製品のレポート、ツールが働いた時間が必要です。

EDIT 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

こんにちはLars Br。なぜ私はそれが必要な追加情報を追加しました。 – Sai

+0

さて、私はあなたの追加要件を読んだ。しかし、この場合のテーブルを作るためには、何が必要ですか? JOBSにTOOLSで参加して時間を集めることができないのはなぜですか? –

答えて

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

ラーズありがとう、私はハナがピボットを提供しないことを理解した。私はこの表現をさらに処理する必要があります。 sqlsを書く上でベストプラクティスは何ですか?ストアドプロシージャと関数、または純粋なSQLスクリプトの作成?人生を簡単にするために、私はストアドプロシージャと関数を書いていますが、多くの時間を消費します。私はあなたの意見を聞き、いくつかの提案をします。 – Sai

+0

あなたの処理要件は何ですか?クロスタブを入力として使用することは、人間の読者のための光学的表現と、データで何ができるのかについての情報が少ないため、私の経験ではあまり珍しいことではありません。 –

+0

hanaのPALにはクロスタブ形式が必要です。 – Sai