sql >> データベース >  >> RDS >> Sqlserver

MS Excel-外部(SQL)データをローカルテーブル(シート)と結合する

    上記の私のコメントは、あなたが手元に持っているかもしれないいくつかの可能性を開くことを単に意図したものでした。

    PowerQueryは、Office 2013用の無料のプラグインです。Office2016では、PowerQueryはExcelの一部であり、プラグインではなくなりました。

    とにかく、SQLで一時テーブルまたはテーブル変数を使用するアプローチを好むようです。したがって、このアプローチについてもう少し詳しく説明します。

    最後に、次のようなクエリが必要になります:

    set nocount on;
    declare @tblVAT table
        (
         Country nvarchar(50),
         VAT decimal(9, 7)
        );
    
    insert  into @tblVAT
            (Country, VAT)
    values  (N'Germany', 0.19),
            (N'Frence', 0.20),
            (N'Spain', 0.21);
    
    
    select  tc.Name,
            tc.ID,
            case when tc.Country is null then tv.Country
                 else tc.Country
            end as Country,
            tv.VAT
    from    dbo.tblCustomers as tc
    full outer join @tblVAT as tv
    on      tv.Country = tc.Country;
    

    set nocount on;の重要性に注意してください 上記のSQLクエリの開始時。それがないと機能しません!

    このクエリを取得したら、メニューのDataを使用してExcelに貼り付けることができます。 ►Get External DataFrom SQL Server 。最初のステップでcustomerテーブルを取得し、次に2番目のステップでクエリを絞り込んで上記のようにテーブル変数を含めます。短い視覚的な要約は次のとおりです:

    この時点で残っている質問は次のとおりです。

    1. 上記のSQLステートメントを動的に作成するにはどうすればよいですか
    2. 上記のテーブルをExcelで取得し、この更新されたSQLステートメントで更新するにはどうすればよいですか。

    上記のSQLを動的に作成するには、次を確認することをお勧めします。ExcelvbaのSQLで配列または辞書をfrom句として使用する

    ちょうど昨日、ユーザーがExcelシートのコンテンツを動的に作成されたテーブルとしてSQLServerに渡したいという同様の質問に答えました。目的に合わせて簡単に適応(またはそのまま使用)できます。

    最後のステップ(この新しいSQLクエリを使用してExcelでこのテーブルを更新する)では、マクロレコーダーを使用して、上のスクリーンショットで行ったことを実行できます。自動的に作成されたコードは、私があなたに提案するものにすぎません。

    だから、あなたはそれを持っています。私が十分に明確でなかった場合、またはこの解決策を理解するためにさらに詳細が必要な場合は、私に知らせてください。




    1. pg_ctlのヒントとコツ

    2. 列挙値のセットでフィルタリングするHibernate基準

    3. SQLServerでの7日間の移動平均のSQLクエリ

    4. MySQLレプリケーションのトラブルシューティング:パート1