Select

可通过标准 SQL SELECT语句从 ODBC 数据源或OLE DB 提供商选择字段。然而,是否接受 SELECT语句取决于所使用的 ODBC 驱动程序或 OLE DB 提供程序。

语法:  

Select [all | distinct | distinctrow | top n [percent] ] fieldlist

From tablelist

[where criterion ]

[group by fieldlist [having criterion ] ]

[order by fieldlist [asc | desc] ]

[ (Inner | Left | Right | Full) join tablename on fieldref = fieldref ]

 

而且,几个 SELECT语句可通过使用 union 运算符结合成一个整体:

selectstatement Union selectstatement

 

SELECT语句由 ODBC 驱动程序或 OLE DB 提供者解释,因此可能会发生一般的 SQL 语法偏差,具体取决于 ODBC 驱动程序的功能或 OLE DB 提供者,例如:

  • 有时,不允许使用 as,即 aliasname 必须紧跟在 fieldname 之后。
  • 如果使用 as,有时会强制使用 aliasname
  • 有时,不支持 distinctaswheregroup byorder byunion
  • 有时,ODBC驱动程序不支持所有以上列出的不同引号。
备注: 这不是完整的 SQLSELECT语句!例如,SELECT语句可以嵌套,可在一个 SELECT 语句中创建几个连接,表达式中允许的函数个数有时非常大等。

参数:  

参数 说明
distinct distinct是一个在所选字段中的值的重复组合只应加载一次时使用的谓词。
distinctrow distinctrow是一个在源表格中的重复记录只应加载一次时使用的谓词。
fieldlist fieldlist ::= (*| field ) {, field }

要选择的字段列表。使用 *作为字段列表,表示表格中全部字段。

fieldlist ::= field {, field }

一个或多个字段的列表,用逗号分开。

field ::= ( fieldref | expression ) [as aliasname ]

例如表达式可以为一个基于一个或几个其他字段的数字或字符串函数。一些通常接受的运算符或函数为:+-*/&(字符串串联)、sum(fieldname)count(fieldname)avg(fieldname)(average)month(fieldname) 等。请参阅 ODBC 驱动程序的文档,了解更多信息。

fieldref ::= [ tablename. ] fieldname

tablenamefieldname 是它们表示的意思相似的文本字符串。如果他们包含空格则它们必须包括在直双引号内。

as子句用于为字段分配一个新名。
from tablelist ::= table {, table }

要从其中选择字段表格列表。

table ::= tablename [ [as ] aliasname ]

tablename可以也可以不放在引号内。

另请: From

where where是一个子句,用于陈述一个记录是否应该包括在选择项内。

criterion是一个逻辑表达式,有时可能会非常复杂。以下是可以接受的一些运算符:数值运算符和函数、=<>#(不等于)、>>=<<=andornotexistssomeallin 和新的SELECT 语句。有关详细信息,请参阅文档 ODBC驱动程序或 OLE DB 提供者。

group by group by是一个子句,用于将几个记录聚合(组成)为一个整体。对于某些字段来说,在一个组中,所有记录要么拥有一个相同的值,要么字段只能用于一个表达式内,如作为合计或平均值。基于一个或几个字段的表达式在字段符号的表达式中定义。
having having是一个子句,用于以一种与 where 子句在限定记录时相同的使用方式限定组。
order by order by是一个用于表述 SELECT 语句的结果表排序顺序的子句。
join join是一个限定符,用于表述几个表格是否应联接为一个整体。字段名及表格名如果包含空格或来自国际字符集的字母则必须被放进引号内。脚本由 QlikView自动生成时,使用的引号应为在 ODBC 语句的数据源定义中指定的 OLE DB 驱动程序或 Connect 提供者偏好的引号。

示例 1:  

SELECT * FROM `Categories`;

示例 2:  

SELECT `Category ID`, `Category Name` FROM `Categories`;

示例 3:  

SELECT `Order ID`, `Product ID`,

`Unit Price` * Quantity * (1-Discount) as NetSales

FROM `Order Details`;

示例 4:  

SELECT `Order Details`.`Order ID`,

Sum(`Order Details`.`Unit Price` * `Order Details`.Quantity) as `Result`

FROM `Order Details`, Orders

where Orders.`Order ID` = `Order Details`.`Order ID`

group by `Order Details`.`Order ID`;

另请参阅: