使用 SQL 导入数据子集

使用 ODBC 从数据库导入数据时,可以使用结构化查询语言 (SQL) 表达式来仅导入您需要的记录(行)。SQL 在许多数据库应用程序中使用。Minitab 不会对 SQL 表达式执行操作,只会将其传递给数据库。

选择要导入的字段

  1. 选择文件 > 查询数据库 (ODBC)
  2. 选择数据源。如果出现提示,请选择数据库。
  3. 在“查询数据库 (ODBC)”对话框中,从可用表格下拉列表中选择要查询的表格。
  4. 使用箭头按钮将要导入的字段移到所选字段
  5. 单击使用行
  6. 使用行中,输入用于定义要导入的记录的表达式。这些记录将成为 Minitab 中的行。 表达式以关键字“where”开始,并包含字段名、逻辑运算符(如“And”和“=”)、SQL 函数和值。有关支持的 SQL 函数的详细信息,请参阅您的数据库应用程序的文档。
  7. 在每个对话框中单击确定

SQL 表达式语法准则

不同数据库应用程序的 ODBC 驱动程序的语法规则是不同的。如果需要关于语法的帮助,请与数据库管理员联系。

文本值
对应于文本值的语法必须遵循 ODBC 驱动程序的语法规则,如下所示:
  • 对于 Microsoft Access 和许多其他数据库,将文本值括在单引号内(如 'Morristown')。
  • 对于 Oracle 或 SQL Server 数据库,将文本值括在两组双引号内(如 ""Morristown"")。
数字值
不要将数字(如 300)括在任何特殊字符内。
日期/时间值
对于 Access 和 dBASE 数据库,将日期括在井号内(如 #12/31/2016#)。对于其他数据库,请参见应用程序的文档。也可以使用日期/时间函数,而不输入具体的日期。
字段名
字段分隔符因 ODBC 驱动程序不同而异。如果通过从“使用行”对话框中的字段列表中选择字段名来输入字段名,Minitab 会将字段括在适用于您的 ODBC 驱动程序的分隔符内。
函数
要表明函数是 ODBC 函数而不是您从中执行导入的数据库应用程序的函数,可使用括号和字母“fn”(例如 {fn SQRT(128)})。如果从“使用行”对话框中的列表中选择函数,Minitab 会自动添加必要的语法。
通配符
对于所有 SQL 查询中的通配符,可使用百分号 (%) 而非星号 (*),可使用下划线 (_) 而非问号 (?)。

Microsoft Access 的 SQL 表达式示例

针对 Access 以外的其他数据库应用程序的语法可能有所不同。

注意

为获得最佳结果,请勿从表格中复制并粘贴这些表达式。请直接将其键入到对话框中。

要导入的数据 SQL 表达式
2017 年第一季的记录
where DATE >= #1/1/17# And DATE < #4/1/17#
自 2010 年 1 月 1 日开始雇佣的、在财务部门工作的员工的记录
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 函数。如果您收到错误消息,该消息是源自 ODBC 驱动程序,而不是 Minitab。

下面是在使用 ODBC 和 TIMESTAMPDIFF 函数查询 Microsoft Access 时收到的错误消息示例:
"SQL Error State: 37000, Native Error Code: FFFFF3E2, ODBC Error: [Microsoft]
[ODBC Microsoft Access Driver] Undefined function 'TIMESTAMPDIFF' in expression."

Access 提供了一个针对 TIMESTAMPDIFF 的备择函数。此备择函数是 DATEDIFF( )。以下查询将检索员工记录中的三列。第一个列是从员工的开始日期一直到今天的已过去的天数。第二个和第三个列是员工的姓名和开始日期。

ODBC;
  Connect "DSN=Test;DBQ=Q:\Trumparc.mdb;"&
   "DriverId=25;FIL=MS Access;Max" & "BufferSize=2048;PageTimeout=5;PWD=msl;"&
   "SystemDB=Q:\secured.mdw;UID=msl;";
  SQLString "SELECT DateDiff('y', `StartDate`, Now()),"&
   "`Name`,`StartDate` FROM `Employee`".
使用此网站,即表示您同意对数据分析和个性化内容使用 Cookie。  请阅读我们的政策