SQLを使用したデータのサブセットのインポート

ODBCを使用してデータベースからデータをインポートする場合、SQL(構造化照会言語)式を使用して目的のレコード(行)のみをインポートできます。SQLは、多くのデータベースアプリケーションで使用されています。MinitabはSQL式を直接実行することはなく、式をデータベースに渡すだけです。

インポートするフィールドを選択する

  1. ファイル > データベースを照会 (ODBC)を選択します。
  2. データソースを選択します。選択を求められた場合は、データベースを選択します。
  3. [データベースを照会(ODBC)]ダイアログボックスで、照会するテーブルを利用可能な表ドロップダウンリストから選択します。
  4. 矢印ボタンを使用して、選択したフィールドにインポートしたいフィールドを移動させます。
  5. 行を使用をクリックします。
  6. 行を使用に、インポートするレコードを定義する式を入力します。これらのレコードはMinitabで行になります。 式は「where」というキーワードで始まり、フィールド名、論理演算子(「And」や「=」など)、SQL関数、値が含まれます。サポートされているSQL関数の詳細は、データベースアプリケーションの文書を参照してください。
  7. 各ダイアログボックスのOKをクリックします。

SQL式の構文のガイドライン

構文規則は各データベースアプリケーションのODBCドライバによって異なります。不明な点は、データベース管理者にお問い合わせください。

テキスト値
テキスト値の構文は、次のようにODBCドライバの構文規則に従っていなければなりません。
  • Microsoft® Accessやその他多くのデータベースでは、テキスト値を一重引用符で囲みます('Morristown'など)。
  • OracleデータベースおよびSQL Serverデータベースでは、テキスト値を2組の二重引用符で囲みます(""Morristown""など)。
数値
数字(300など)は、特殊文字で囲みません。
日付/時刻値
AccessやdBASEのデータベースでは、日付を#記号で囲みます(#12/31/2016#など)。その他のデータベースの場合は、アプリケーションの文書を参照してください。特定の日付を入力する代わりに、日付/時刻関数を使用することもできます。
フィールド名
フィールドの区切り文字は、ODBCドライバにより異なります。[行を使用]ダイアログボックスのフィールドリストからフィールド名を選択して入力すると、そのフィールドはODBCドライバに対応する区切り文字で囲まれます。
関数
括弧とアルファベット「fn」を用いて、関数がインポート元のデータベースアプリケーションから引き継いだ関数ではなく、ODBC関数であるということを示します({fn SQRT(128)}など)。関数を[行を使用]ダイアログボックスのリストから選択すると、必要な構文が自動的に追加されます。
ワイルドカード文字
すべてのSQLクエリのワイルドカードには、アスタリスク(*)の代わりにパーセント記号(%)、クエスチョンマーク(?)の代わりにアンダースコア(_)を使用します。

Microsoft® AccessのSQL式の例

Access以外のデータベースアプリケーションの構文は異なる可能性があります。

最良の結果を得るには、表の式をコピー/貼り付けせず、ダイアログボックスに直接入力してください。

インポートするデータ SQL式
2017年第1四半期のレコード
where DATE >= #1/1/17# And DATE < #4/1/17#
2010年1月1日以降に雇用された財務部(Finance)に所属する従業員のレコード
where DATE_HIRED > #1/1/10# And DEPT = 'Finance'
過去30日のデータ
where `DateFieldName` > Now() - 30
昨日のデータ
where (Format(Now-1,'mm-dd-yy')=Format(DateFieldName,'mm-dd-yy'))

一部のSQL関数が動作しない理由

SQLでは式の作成に使用できるODBC関数が定義されています。ただし、ODBCドライバによってはすべてのODBC関数に対応していないことがあります。たとえば、Microsoft® Access用のODBCドライバはTIMESTAMPDIFF関数に対応していません。エラーメッセージが表示される場合、そのメッセージはMinitabではなくODBCドライバからのものです。

Microsoft® Accessの照会にTIMESTAMPDIFF関数が含まれるODBCを使用した場合、次のようなエラーメッセージが表示されます。
"SQL Error State:37000, Native Error Code:FFFFF3E2, ODBC Error:[Microsoft] [ODBC Microsoft® Access Driver] Undefined function 'TIMESTAMPDIFF' in expression."

AccessにはTIMESTAMPDIFFの代わりとなる関数があります。代替関数はDATEDIFF( )です。次に示すクエリによって従業員レコードから3つの列が取得されます。1列目は従業員の開始日から今日までの経過日数です。2列目と3列目は、従業員の名前と開始日です。

ODBC; Connect "DSN=Test;DBQ=Q:\Trumparc.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=msl;SystemDB=Q:\secured.mdw;UID=msl;"; SQLString "SELECT DateDiff('y', `StartDate`, Now()),`Name`,`StartDate` FROM `Employee`".