SQLプロシージャ内で、一時テーブルを作成してからピボットします。これは動的であるため、最終的には列がいくつあるかわかりません。このテーブルを作成しましょう:
equipmentID | Name1 | Name2 | Name3
1 | 34.54 | 21.23 | 213.65
2 | 334 | 23.421 | 23.12
3 | 43.4 | 2.34 | 23.41
これを生成するために使用されるクエリは文字列に格納され、を呼び出すことによって実行されexecute(@stringQuery)
ます。
私の他のテーブルは通常のSQLクエリでフェッチされ、別の情報セット(equipmentID
ピボットテーブルに含まれているものを含む)を生成します。
私がやりたいのは、これら2つのテーブルを結合することです(equipmentID
ストアドプロシージャが2つではなく1つのテーブルを返すように基づいていますが、これを行う方法がわかりません。
これまで私はいくつかのことを試みました:
メイン(2番目)のクエリを保持し、セクションの最後に実行行を追加して、
FROM
すべてのテーブルが結合された後、次のようにします。LEFT JOIN execute(@stringQuery) as strQ on strQ.equipmentID = mainQ.equipmentID
2番目のクエリを文字列にして、両方が
execute
コマンドでフェッチされるようにするか、メインSQLを含む別のストアドプロシージャを作成して、(再び)両方がexecute
コマンドを使用するようにしました。これは、情報を組み合わせないだけで情報を取得します。この場合、これら2つの実行を次のように組み合わせようとしました。execute('select * from (' + @query1 + ') as tbl2 left join ' + @query2 + ' as tbl1 on tbl2.equipmentID= tbl1.equipmentID')
メインクエリを文字列に変換してから、を使用してそれらを結合すると、
LEFT JOIN
1つの大きなクエリになります。
これらすべてが私に問題を与えました。私はこれが一般的なことであると考え、私がすでに試したこと以外にそれを解決するためにどのようにアプローチするかがわかりませんでした。
編集 一時テーブルを作成して挿入(または選択)しようとすると、一時テーブル名が無効なオブジェクトであると通知されます。