2

私はシステム間のデータ変換を行っており、サポートする列のペアを表示するためにプルしtable1て結合する必要のある行を識別する select ステートメントを準備しました。table2この select ステートメントは、宛先システムへのアップロード用に結果をフォーマットするために、空白の列も結果に配置します。

このクエリ以外にも、いくつかの列の値を更新する必要があります。これは、新しいテーブルの別のステートメント操作で行いたいと考えています。したがって、上記の select ステートメントを 内のサブクエリとして実行することに興味がありSELECT INTOます。これにより、基本的に結果がステージング テーブルに取り込まれます。

SELECT 
    dbo_tblPatCountryApplication.AppId, '', 
    dbo_tblPatCountryApplication.InvId,
    'Add', dbo_tblpatinvention.disclosurestatus, ...
FROM 
    dbo_tblPatInvention 
INNER JOIN 
    dbo_tblPatCountryApplication ON dbo_tblPatInvention.InvId = dbo_tblPatCountryApplication.InvId
ORDER BY 
    dbo_tblpatcountryapplication.invid;

上記のステートメントを実行して、結果が新しいテーブルにダンプされるようにしたいと思います。ステートメントをサブクエリに埋め込む方法を教えてくださいSELECT INTO

4

3 に答える 3

1

既存のクエリに句を追加するだけINTOで、クエリの結果で満たされた新しいテーブルを作成できます。

SELECT ...
INTO MyNewStagingTable -- Creates a new table with the results of this query
FROM MyOtherTable
    JOIN ...

ただし、次のように、各列に名前があることを確認する必要があります。

SELECT dbo_tblPatCountryApplication.AppId, -- Cool, already has a name
    '' AS Column2, -- Given a name to create that new table with select...into
    ...
INTO MyNewStagingTable
FROM dbo_tblPatInvention INNER JOIN ...

また、コードをもう少し読みやすくするために、テーブルにもエイリアスを使用したい場合があります。

SELECT a.AppId,
    '' AS Column2,
    ...
INTO MyNewStagingTable
FROM dbo_tblPatInvention AS i
    INNER JOIN dbo_tblPatCountryApplication AS a ON i.InvId = a.InvId
ORDER BY a.InvId

最後に、テーブルに名前を付けるのは奇妙に見えることです。dbo_tblXXX通常、dbo はスキーマ名であり、ドット表記でテーブル名と区切られているためdbo.tblXXXです。into 句を追加する前に、完全に機能する選択クエリが既にあると仮定しています。データベース (tblName) でハンガリー語表記を使用することは、避けるべきアンチパターンの一種であると考える人もいます。

于 2013-04-10T14:56:47.730 に答える
0

ステージング テーブルが存在せず、挿入時に作成する場合は、次の手順を試してください。

SELECT dbo_tblPatCountryApplication.AppId,'', dbo_tblPatCountryApplication.InvId,
       'Add', dbo_tblpatinvention.disclosurestatus .......
INTO StagingTable
FROM dbo_tblPatInvention 
INNER JOIN dbo_tblPatCountryApplication 
              ON dbo_tblPatInvention.InvId = dbo_tblPatCountryApplication.InvId;

それらを特定の順序で挿入する場合は、from 句でサブクエリを使用してみてください。

SELECT *
INTO StagingTable
FROM 
(
   SELECT dbo_tblPatCountryApplication.AppId, '', dbo_tblPatCountryApplication.InvId, 
          'Add', dbo_tblpatinvention.disclosurestatus .......
   FROM dbo_tblPatInvention 
   INNER JOIN dbo_tblPatCountryApplication ON 
              dbo_tblPatInvention.InvId = dbo_tblPatCountryApplication.InvId
    order by dbo_tblpatcountryapplication.invid
) a;
于 2013-04-10T14:47:41.907 に答える
0

試す

INSERT INTO stagingtable (AppId, ...)
SELECT ... --your select goes here
于 2013-04-10T14:39:05.497 に答える