1

テーブルから別の既存のテーブルにデータを挿入するinsert sqlステートメントを考え出そうとしています。実際、これを行うにはいくつかの方法がありますが、私の要件に合った方法が見つかりませんでした。

別のテーブルにデータを挿入する挿入ステートメント タイプのクエリが必要ですが、両方のテーブルのヘッダーがわかりません。たとえば、元のテーブルには 25 個のヘッダーがあり、ターゲット テーブルには 20 個のヘッダーがあり、そのうちの 10 個は名前が一致します。残りを無視して、ヘッダーの名前に一致するものを転送したいと思います。

私がはっきりしていて、誰かが私を助けてくれることを願っています

4

2 に答える 2

0

これをすべて実行できる単一のクエリは考えられませんが、これを実行するための SQL Server プロシージャを作成することは間違いなく可能です。

次のクエリから、ソース テーブルと宛先テーブルの列名と列のデータ型のリストを取得できます。

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'TABLENAME'

これにより、pl/sql でループを実行して、名前とデータ型に基づいて一致する列を見つけ、オンザフライで動的な plsql を形成して実行できます。これは私が推測するあなたの目的を解決するはずです。

于 2011-07-27T12:48:29.980 に答える
0

2つのテーブルの列を取得してからemをフィルタリングして一致する列名を取得する必要があると思います。その後、insert intoステートメントを作成して実行できます

両方のテーブルに存在する列を取得する

Declare @cols varchar(max)

SELECT  @cols =COALESCE(@cols +',','')+'['+COLUMN_NAME+']'
FROM DbName.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = N'security' and COLUMN_NAME in( 
      SELECT COLUMN_NAME
      FROM DbName.INFORMATION_SCHEMA.COLUMNS 
      WHERE TABLE_NAME = N'debt_securities')

次に、挿入ステートメントを作成します

declare @query varchar(max)='insert into debt_securities('+@cols+')
                             select '+@cols+' from [security]'

それを実行する

exec(@query)
于 2011-07-27T12:40:58.637 に答える