39 SQLで2つの台帳を自由にデータマッチング

Pocket

別の下記記事でデータマッチングについて簡単に纏めましたが、
http://superdbtool.com/blog/archives/103
実際にデータマッチングは様々な条件があって、そしてマッチングのソート順も
指定する必要な場合があります。

もっと自由にデータをマッチングするにはやはりSQLは一番柔軟です。
ExcelDevToolで使っているSQL文法はSqliteと同じです。
以下は例で説明します。
データ1(Aシート):

名前 年齢 臭味 婚姻 年収
たろう 58歳 趣味カメラ 既婚 年収800万…
まちこ 27歳 趣味陶芸 未婚 年収300万…
はなこ 32歳 趣味ボーリング 既婚 専業主婦…
よさく 83歳 趣味山歩き 既婚 年金生活


データ2(Bシート):

名前 出発 帰宅 行き先 備考
はなこ 1月1日出発 1月7日帰宅 行き先京都 おみやげ八つ橋…
たろう 3月4日出発 3月16日帰宅 行き先北海道 おみやげ昆布…
まちこ 12月25日出発 12月30日帰宅 行き先沖縄 おみやげシーサー…


やりたいこと:AシートのデータとBシートのデータを名前でマッチングして、データ2に存在しない
名前なら、「存在しない」と表示する

http://www.superdbtool.com/download.htm
上記のソフトをダウンロードして、Excelを閉じてからインストールします。終わりましたら、Excel起動して、データの入っているファイルを開きます。(インストールガイド)

①、Excelシート上にて右クリックして、機能拡張⇒テーブル⇒「データマッチング・突合・照合・SQL」をクリックします。
DataMatching-3-1

②、データ1にAシートのデータをタイトルを含めて選択します。
DataMatching-3-2

 ③、データ2にBシートのデータをタイトルを含めて選択します。
DataMatching-3-3

DataMatching-3-4

④、ステップ3でデータ1とデータ2の条件に「名前」を選択して、「SQL実行」をクリックします。
DataMatching-3-5

⑤、デフォルトで以下のSQLが生成されます。このSQLでは一般的なマッチングには十分です。
DataMatching-3-6

 ⑥、今回の例では「存在しない」の表示も要りますので、SQLを少し修正します。
DataMatching-3-7

SELECT
    T1.名前 AS T1_名前,
    T1.年齢 AS T1_年齢,
    T1.臭味 AS T1_臭味,
    T1.婚姻 AS T1_婚姻,
    T1.年収 AS T1_年収,
    T2.名前 AS T2_名前,
    T2.出発 AS T2_出発,
    T2.帰宅 AS T2_帰宅,
    T2.行き先 AS T2_行き先,
    T2.備考 AS T2_備考,
    (CASE
        WHEN T2.名前=” OR T2.名前 IS NULL THEN ‘存在しない’
    END) 結果
FROM T1 LEFT OUTER JOIN T2 ON

  T1.名前 = T2.名前

⑦、「実行」ボタンをクリックすれば、以下の結果が出ます。
DataMatching-3-8